# Unit testing

Unit testing is a software testing method that evaluates individual units or components of code in isolation before they are integrated.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Moving from XCTest to Swift Testing \[FREE\]

DevFeed: [Moving from XCTest to Swift Testing \[FREE\]](<https://devfeed.tech/articles/moving-from-xctest-to-swift-testing-free-11509.md>)

Original publisher: [Read original article](<https://www.kodeco.com/53560697-moving-from-xctest-to-swift-testing>)

Author: renan.dias

Published: 2026-09-11T18:41:42Z

Content type: tutorial

Language: en

Sources: [Kodeco | High quality programming tutorials: iOS, Android, Swift, Kotlin, Unity, and more](<https://devfeed.tech/sources/kodeco-high-quality-programming-tutorials-ios-android-swift-kotlin-unity-and-more.md>)

Topics: [Swift Testing](<https://devfeed.tech/topics/swift-testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [agentic-coding](<https://devfeed.tech/topics/agentic-coding.md>), [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [app](<https://devfeed.tech/tags/app.md>), [apple](<https://devfeed.tech/tags/apple.md>), [article](<https://devfeed.tech/tags/article.md>), [free](<https://devfeed.tech/tags/free.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ios](<https://devfeed.tech/tags/ios.md>), [swift-testing](<https://devfeed.tech/tags/swift-testing.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [testing](<https://devfeed.tech/tags/testing.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A tutorial on migrating unit tests from Apple's XCTest framework to Swift Testing. It explains common testing scenarios, Swift Testing's newer syntax and constructs, and how Xcode's Agentic Coding can assist with the migration while working on a SwiftUI coffee-ordering app.

### Source excerpt

Swift Testing is Apple's replacement for the objective-C XCTest unit testing framework. Discover how to migrate your existing XCTest suites over to Swift Testing, including how to get some assistance from Xcode's agentic AI tooling.

## API Testing Techniques Including Smoke, Functional, and Unit Testing

DevFeed: [API Testing Techniques Including Smoke, Functional, and Unit Testing](<https://devfeed.tech/articles/i-struggled-with-api-testing-until-i-learned-these-53-techniques-17908.md>)

Original publisher: [Read original article](<https://newsletter.systemdesign.one/p/api-testing-types>)

Author: Neo Kim

Published: 2026-08-31T11:19:11Z

Content type: article

Language: en

Sources: [System Design Newsletter](<https://devfeed.tech/sources/system-design-newsletter.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-testing](<https://devfeed.tech/tags/api-testing.md>), [techniques](<https://devfeed.tech/tags/techniques.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This article covers API testing techniques, including smoke testing, functional testing, unit testing, and 22 other techniques.

### Source excerpt

#173: Part 1 - smoke testing, functional testing, unit testing, and 22 others.

## Testing an Agent Harness Without Ever Calling the Model

DevFeed: [Testing an Agent Harness Without Ever Calling the Model](<https://devfeed.tech/articles/testing-an-agent-harness-without-ever-calling-the-model-34114.md>)

Original publisher: [Read original article](<https://philipptheserver.com/posts/testing-an-agent-harness/>)

Author: Philipp Lehmann (philipp.lehmann@gruppe.ai)

Published: 2026-07-31T07:00:00Z

Content type: tutorial

Language: en

Sources: [Philipp Lehmann](<https://devfeed.tech/sources/philipp-lehmann.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Agent Harness](<https://devfeed.tech/topics/agent-harness.md>), [Pytest](<https://devfeed.tech/topics/pytest.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [coding](<https://devfeed.tech/topics/coding.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [agent-harness](<https://devfeed.tech/tags/agent-harness.md>), [agents](<https://devfeed.tech/tags/agents.md>), [api](<https://devfeed.tech/tags/api.md>), [network](<https://devfeed.tech/tags/network.md>), [permission](<https://devfeed.tech/tags/permission.md>), [pytest](<https://devfeed.tech/tags/pytest.md>), [python](<https://devfeed.tech/tags/python.md>), [recording](<https://devfeed.tech/tags/recording.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This tutorial explains how to unit test a coding agent's tool-call permission layer without calling a model. It recommends separating the decision function from model responses, using recorded real-request fixtures, and keeping the policy module independent of any LLM SDK.

### Source excerpt

Unit testing a coding agent's tool-call permission layer with pytest and recorded fixtures: allow, deny or ask decisions with no model or API key.

## Lint Me: Test Sources 🖇

DevFeed: [Lint Me: Test Sources 🖇](<https://devfeed.tech/articles/lint-me-test-sources-26176.md>)

Original publisher: [Read original article](<https://zarah.dev/2025/12/02/lint-tests.html>)

Author: Zarah Dominguez

Published: 2025-12-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Zarah Dominguez](<https://devfeed.tech/sources/zarah-dominguez.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [files](<https://devfeed.tech/tags/files.md>), [flag](<https://devfeed.tech/tags/flag.md>), [lint](<https://devfeed.tech/tags/lint.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This tutorial explains how to configure an Android Lint TODO Detector to inspect test sources without enabling every normal Lint rule for those files. It covers the relevant scope configuration and adding unit-test coverage for the change.

### Source excerpt

It has been a year, which means it is once again time to re-examine our TODO Lint rule.

## Automating Exhaustive Branch Coverage for Sealed Types in Kotlin

DevFeed: [Automating Exhaustive Branch Coverage for Sealed Types in Kotlin](<https://devfeed.tech/articles/automating-exhaustive-branch-coverage-for-sealed-types-in-kotlin-20458.md>)

Original publisher: [Read original article](<https://eng.wealthfront.com/2025/11/20/sealed-tests/>)

Author: Sean Amos

Published: 2025-11-20T16:33:33Z

Content type: tutorial

Language: en

Sources: [Wealthfront](<https://devfeed.tech/sources/wealthfront.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [test-coverage](<https://devfeed.tech/topics/test-coverage.md>), [Code quality](<https://devfeed.tech/topics/code-quality.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [automation](<https://devfeed.tech/tags/automation.md>), [code](<https://devfeed.tech/tags/code.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [exhaustive](<https://devfeed.tech/tags/exhaustive.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [sealed](<https://devfeed.tech/tags/sealed.md>), [sealed-classes](<https://devfeed.tech/tags/sealed-classes.md>), [subtype](<https://devfeed.tech/tags/subtype.md>), [test-coverage](<https://devfeed.tech/tags/test-coverage.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [wealthfront-engineering](<https://devfeed.tech/tags/wealthfront-engineering.md>)

### AI overview

This article explains how to build an Exhaustive Test Runner for Kotlin sealed classes and interfaces. The approach ensures that functions accepting sealed parameters have at least one unit test for each subtype, including future subtypes added to the hierarchy.

### Source excerpt

We take code correctness and code quality seriously at Wealthfront. One of the most effective ways we ensure that our code is correct is through rigorous unit testing and strong typing. In Kotlin, sealed classes and sealed interfaces offer a powerful tool to model restricted class hierarchies. They provide strong guarantees about the types in... Read more

## Angular Zoneless Unit Testing

DevFeed: [Angular Zoneless Unit Testing](<https://devfeed.tech/articles/angular-zoneless-unit-testing-37461.md>)

Original publisher: [Read original article](<https://www.angularspace.com/angular-zoneless-unit-testing/>)

Author: Francesco Borzì

Published: 2025-09-30T06:30:10Z

Content type: tutorial

Language: en

Sources: [Daniel Glejzner](<https://devfeed.tech/sources/daniel-glejzner.md>)

Topics: [Angular](<https://devfeed.tech/topics/angular.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [articles](<https://devfeed.tech/tags/articles.md>), [code](<https://devfeed.tech/tags/code.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

This tutorial explains how to adapt Angular unit tests for zoneless change detection. It recommends enabling provideZonelessChangeDetection(), avoiding unnecessary detectChanges() calls, and replacing Zone.js-dependent testing helpers as applications migrate away from Zone.js.

### Source excerpt

The Future Is Zoneless -- What Can We Do Today? You've probably heard: Angular is moving toward a Zoneless future. Migrating your Angular app to run without Zone.js brings several benefits, but for medium-to-large applications, the process might not be trivial. The good

## TDD & Commit: Is unit testing harmful? What about Rework/Refactoring?

DevFeed: [TDD & Commit: Is unit testing harmful? What about Rework/Refactoring?](<https://devfeed.tech/articles/tdd-commit-is-unit-testing-harmful-what-about-rework-refactoring-28433.md>)

Original publisher: [Read original article](<https://craftingtechteams.substack.com/p/tdd-and-commit-is-unit-testing-harmful>)

Author: Denis Čahuk

Published: 2025-07-26T06:54:19Z

Content type: article

Language: en

Sources: [Crafting Tech Teams](<https://devfeed.tech/sources/crafting-tech-teams.md>)

Topics: [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [refactoring](<https://devfeed.tech/tags/refactoring.md>), [tdd](<https://devfeed.tech/tags/tdd.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

A video talk examines how test-driven development relates to unit testing, refactoring, rework, and commit practices. It argues that testing problems usually stem from unclear intent, churn, poor test design, or misplaced tests rather than TDD itself.

### Source excerpt

A recording from Denis Čahuk's live video

## Writing Clear, Focused Assertions in Unit Tests

DevFeed: [Writing Clear, Focused Assertions in Unit Tests](<https://devfeed.tech/articles/the-1-mistake-in-unit-testing-and-how-to-fix-it-26213.md>)

Original publisher: [Read original article](<https://craftbettersoftware.com/p/the-1-mistake-in-unit-testing-and>)

Author: Daniel Moka

Published: 2025-05-24T05:01:11Z

Content type: tutorial

Language: en

Sources: [Craft Better Software](<https://devfeed.tech/sources/craft-better-software.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [clean-code](<https://devfeed.tech/topics/clean-code.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [clean-code](<https://devfeed.tech/tags/clean-code.md>), [readability](<https://devfeed.tech/tags/readability.md>), [techniques](<https://devfeed.tech/tags/techniques.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [writing](<https://devfeed.tech/tags/writing.md>)

### AI overview

The article presents five practices for writing clean, expressive assertions in unit tests. It emphasizes testing one logical behavior per test, capturing domain knowledge through well-named helper functions, and treating tests as documentation.

### Source excerpt

Best practices to nail the most important part of your unit test

## Learning Path: Testing and Continuous Integration

DevFeed: [Learning Path: Testing and Continuous Integration](<https://devfeed.tech/articles/learning-path-testing-and-continuous-integration-4385.md>)

Original publisher: [Read original article](<https://realpython.com/learning-paths/test-your-python-apps/>)

Author: Real Python

Published: 2024-11-14T12:00:00Z

Content type: tutorial

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Software Testing](<https://devfeed.tech/topics/software-testing.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Code quality](<https://devfeed.tech/topics/code-quality.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>)

Tags: [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [docker](<https://devfeed.tech/tags/docker.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [learning](<https://devfeed.tech/tags/learning.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [pytest](<https://devfeed.tech/tags/pytest.md>), [python](<https://devfeed.tech/tags/python.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A learning path for testing Python applications, covering unittest, doctest, mock objects, pytest, code quality, and continuous integration with GitHub Actions and Docker.

### Source excerpt

Learn how to test Python code with unittest, doctest, pytest, and mock objects. Set up continuous integration with GitHub Actions and Docker.

## Coroutine Testing - Never ending tests & backgroundScope

DevFeed: [Coroutine Testing - Never ending tests & backgroundScope](<https://devfeed.tech/articles/coroutine-testing-never-ending-tests-backgroundscope-25236.md>)

Original publisher: [Read original article](<https://kau.sh/blog/coroutine-testing-backgroundscope/>)

Author: Kaushik Gopal

Published: 2024-08-30T07:00:45Z

Content type: tutorial

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [channel](<https://devfeed.tech/tags/channel.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutine-testing](<https://devfeed.tech/tags/coroutine-testing.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [flow](<https://devfeed.tech/tags/flow.md>), [job](<https://devfeed.tech/tags/job.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This tutorial explains why coroutine tests can time out when they collect from non-terminating Channels, SharedFlow, StateFlow, or ViewModel jobs. It presents manual Job cancellation and backgroundScope, which cancels child coroutines when the test body completes.

### Source excerpt

series This is part of a series of posts on Coroutine Testing: Picking the right Dispatcher Never ending tests & backgroundscope <- Controlling time Helpful @Junit TestRule extension (coming soon) Full USF example for Android (coming soon) If you've spent some time testing Coroutines this exception should look familiar: After waiting for 1m, the test coroutine is not completing, there were active child jobs This tends to happen when you have a coroutine job in your test, that fails to complete on its own. Let's take a simple example. src on github We use a Channel here which is the proverbial event bus for Coroutines. source: kotlinlang.org Channels don't terminate on their own. So when you run a simple test checking the emission, while the items might get collected correctly per the assert statement in the test, the test itself fails like so: test on github The test here is waiting for that coroutine job to complete, which in turn requires the Channel to, but that never happens and the test times out. Where else would I run into this problem? # Channels aren't the only case you'll run into this problem. For example if you use a "hot" Flow like SharedFlow or StateFlow, they don't terminate on their own, so the onus is on you to complete or cancel their Job in tests. Android developers can frequently run into this problem too if you use ViewModels and have an internal StateFlow providing your "view level data" (what i personally like to call "view state"). You typically use the viewModelScope to launch internal coroutine jobs in a ViewModel. The OS then calls the lifecycle method onClear when the Activity or Fragment no longer needs the ViewModel where all jobs started in the viewModelScope are canceled. But when unit testing these ViewModels, you don't have access to the viewModelScope and shouldn't need it anyway. Solving this problem # There's two ways to solve this problem: 1. Manually cancel the Job ## If you have access to the Job that spawns the never-ending co

## Test Failures Should Be Actionable

DevFeed: [Test Failures Should Be Actionable](<https://devfeed.tech/articles/test-failures-should-be-actionable-23857.md>)

Original publisher: [Read original article](<http://testing.googleblog.com/2024/05/test-failures-should-be-actionable.html>)

Author: Google Testing Bloggers (noreply@blogger.com)

Published: 2024-05-06T13:26:00Z

Content type: article

Language: en

Sources: [Google Testing Blog](<https://devfeed.tech/sources/google-testing-blog.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [site-reliability-engineering](<https://devfeed.tech/topics/site-reliability-engineering.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Pytest](<https://devfeed.tech/topics/pytest.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [pytest](<https://devfeed.tech/tags/pytest.md>), [site-reliability-engineering](<https://devfeed.tech/tags/site-reliability-engineering.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [testing](<https://devfeed.tech/tags/testing.md>), [titus-winters](<https://devfeed.tech/tags/titus-winters.md>), [tott](<https://devfeed.tech/tags/tott.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

The article argues that unit test failures should be actionable: developers should be able to start investigating using only the test name and failure messages. It recommends precise invariants and assertion-library matchers, illustrating the point with a C++ status-check example.

### Source excerpt

This article was adapted from a Google Testing on the Toilet (TotT) episode. You can download a printer-friendly version of this TotT episode and post it in your office. By Titus Winters There are a lot of rules and best practices around unit testing. There are many posts on this blog; there is deeper material in the Software Engineering at Google book; there is specific guidance for every major language; there is guidance on test frameworks, test naming, and dozens of other test-related topics. Isn't this excessive? Good unit tests contain several important properties, but you could focus on a key principle: Test failures should be actionable. When a test fails, you should be able to begin investigation with nothing more than the test's name and its failure messages--no need to add more information and rerun the test. Effective use of unit test frameworks and assertion libraries (JUnit, Truth, pytest, GoogleTest, etc.) serves two important purposes. Firstly, the more precisely we express the invariants we are testing, the more informative and less brittle our tests will be. Secondly, when those invariants don't hold and the tests fail, the failure info should be immediately actionable. This meshes well with Site Reliability Engineering guidance on alerting. Consider this example of a C++ unit test of a function returning an absl::Status (an Abseil type that returns either an "OK" status or one of a number of different error codes): EXPECT_TRUE(LoadMetadata().ok()); EXPECT_OK(LoadMetadata()); Sample failure output load_metadata_test.cc:42: Failure Value of: LoadMetadata().ok() Expected: true Actual: false load_metadata_test.cc:42: Failure Value of: LoadMetadata() Expected: is OK Actual: NOT_FOUND: /path/to/metadata.bin If the test on the left fails, you have to investigate why the test failed; the test on the right immediately gives you all the available detail, in this case because of a more precise GoogleTest matcher. Here are some other posts on this blog that emp

## How To Ensure Exceptional Software Quality On Mobile

DevFeed: [How To Ensure Exceptional Software Quality On Mobile](<https://devfeed.tech/articles/how-to-ensure-exceptional-software-quality-on-mobile-35083.md>)

Original publisher: [Read original article](<https://novoda.com/blog/2023/09/26/how-to-ensure-exceptional-software-quality-on-mobile/>)

Author: Ben

Published: 2023-09-26T08:49:48Z

Content type: tutorial

Language: en

Sources: [Novoda](<https://devfeed.tech/sources/novoda.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [ui-testing](<https://devfeed.tech/topics/ui-testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [mobile-devops](<https://devfeed.tech/tags/mobile-devops.md>), [mobile-engineering](<https://devfeed.tech/tags/mobile-engineering.md>), [quality](<https://devfeed.tech/tags/quality.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui-testing](<https://devfeed.tech/tags/ui-testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This tutorial explains software quality for mobile products through the testing pyramid, performance and stability metrics, scalability, and maintainability. It emphasizes unit tests as a foundation, followed by integration and UI tests to validate component interactions and user flows.

### Source excerpt

Explore the key ways to ensure exceptional software quality on mobile including the pyramid of testing, performance and stability metrics, scalability and maintainability. The post How To Ensure Exceptional Software Quality On Mobile appeared first on Novoda.

## Unit Testing ChatGPT Prompts: Introducing Riteway for SudoLang

DevFeed: [Unit Testing ChatGPT Prompts: Introducing Riteway for SudoLang](<https://devfeed.tech/articles/unit-testing-chatgpt-prompts-introducing-riteway-for-sudolang-20720.md>)

Original publisher: [Read original article](<https://medium.com/javascript-scene/unit-testing-chatgpt-prompts-introducing-riteway-for-sudolang-52761c34abc4?source=rss----c0aeac5284ad---4>)

Author: Eric Elliott

Published: 2023-04-03T21:11:26Z

Content type: article

Language: en

Sources: [Eric Elliot](<https://devfeed.tech/sources/eric-elliot.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Language models](<https://devfeed.tech/topics/language-models.md>), [ChatGPT](<https://devfeed.tech/topics/chatgpt.md>), [Inference](<https://devfeed.tech/topics/inference.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [Prompt Engineering](<https://devfeed.tech/topics/prompt-engineering.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [chatgpt](<https://devfeed.tech/tags/chatgpt.md>), [framework](<https://devfeed.tech/tags/framework.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [tdd](<https://devfeed.tech/tags/tdd.md>), [technology](<https://devfeed.tech/tags/technology.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

The article introduces Riteway for SudoLang, a testing framework for unit-testing prompts and AI-generated outputs. It describes using constraints, requirements, and warnings to help language models produce code and tests that better satisfy specified requirements.

### Source excerpt

Running Riteway's usage example tests in SudoLang running on ChatGPT using GPT-4 I have been a long-time advocate of Test-Driven Development (TDD) because of its many productivity and quality benefits. You can read more about those in "TDD Changed My Life". When I realized that GPT-4 was capable of following complex instructions, one of the first things I thought of was trying to unit test prompts. To do that, I needed more precise control over the prompts. SudoLang is a powerful natural language, constraint-based pseudocode language for GPT-4 and other language model AIs. Since language model outputs can vary significantly and sometimes lack determinism, unit tests play a pivotal role in guaranteeing that the model adheres to all software requirements while generating implementations. Riteway has been my testing framework of choice since we built it during the development of educational software to test student code. With SudoLang, Riteway becomes even more powerful by allowing the language model to provide intelligent feedback on the quality of your tests, and by using intelligent inference to produce quality unit tests for non-deterministic AI-generated outputs. Constraints in SudoLang SudoLang is a constraint-based programming language inspired by the constraints in Ivan Sutherland's Sketchpad. In SudoLang, a constraint is a predefined condition or rule that the model should follow when generating and interpreting code. Constraints help improve the accuracy and relevance of the code functionality, ensuring that it meets the specified requirements. Constraints combine with AI's omnipotent inference to automatically and dynamically synchronize related state changes in SudoLang programs. A lot of the magic in Riteway for SudoLang comes from the powerful, AI-inferred omnipotent constraint solving. Riteway for SudoLang: Built-in Constraints, Requirements, and Warnings Riteway for SudoLang goes beyond traditional testing by incorporating constraints, requirements, and

## Interfaces 101 : Testing with a Mock Interface Ep. 8

DevFeed: [Interfaces 101 : Testing with a Mock Interface Ep. 8](<https://devfeed.tech/articles/interfaces-101-testing-with-a-mock-interface-ep-8-22220.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2023/03/interfaces-101-testing-with-a-mock-interface-ep-8.html>)

Published: 2023-03-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [health-check](<https://devfeed.tech/tags/health-check.md>), [http](<https://devfeed.tech/tags/http.md>), [http-roundtripper](<https://devfeed.tech/tags/http-roundtripper.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [mock-api](<https://devfeed.tech/tags/mock-api.md>), [tests](<https://devfeed.tech/tags/tests.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

This video tutorial explains how to design small, composable interfaces in Go and test an API client. It demonstrates performing HTTP requests and using a mock implementation to specify server response codes during unit testing.

### Source excerpt

Introduction In episode 7, Miki discussed design considerations to keep in mind while creating interfaces in Go with the first idea he proposed being that an interface should represent what we need from a type, and not what is stored on the type. To add some clarity to this thought, Miki explained how the io.Reader and io.Writer interfaces each require one method to be implemented although the underlying concrete type may store more information. The second idea he proposed was that interfaces should be small, with less than 6 methods, to ensure your code remains composable.

## StateFlow and SharedFlow in ViewModels

DevFeed: [StateFlow and SharedFlow in ViewModels](<https://devfeed.tech/articles/stateflow-and-sharedflow-in-viewmodels-22664.md>)

Original publisher: [Read original article](<https://www.valueof.io/blog/stateflow-sharedflow-flow-viewmodel-lifecycle>)

Author: James Shvarts

Published: 2022-12-28T19:21:19Z

Content type: tutorial

Language: en

Sources: [Android Blog - Mobile Dev Notes](<https://devfeed.tech/sources/android-blog-mobile-dev-notes.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [Code](<https://devfeed.tech/topics/code.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [sharedflow](<https://devfeed.tech/tags/sharedflow.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

A practical guide to choosing between StateFlow and SharedFlow in Android ViewModels. It covers lifecycle-aware collection, exposing flows as UI state in view-based apps and Compose, and unit testing ViewModels that convert flows into state or shared events.

### Source excerpt

Collecting State and Shared Flows from ViewModels while respecting lifecycle of the collector views

## Testing Kafka Connectors

DevFeed: [Testing Kafka Connectors](<https://devfeed.tech/articles/testing-kafka-connectors-18876.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/testing-kafka-connectors/>)

Published: 2022-08-25T08:20:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Apache-Kafka](<https://devfeed.tech/topics/apache-kafka.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [apache-kafka](<https://devfeed.tech/tags/apache-kafka.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This article explains how to test custom Kafka Connect source connectors. It covers unit tests for connector classes and polling logic, then describes a testing harness that uses an external etcd system; similar approaches can be applied to sink connectors.

### Source excerpt

Table of Contents Unit Tests Integration Tests Wrap-Up Kafka Connect is a key factor for the wide-spread adoption of Apache Kafka: a framework and runtime environment for connectors, it makes the task of getting data either into Kafka or out of Kafka solely a matter of configuration, rather than a bespoke programming job. There's dozens, if not hundreds, of readymade source and sink connectors, allowing you to create no-code data pipelines between all kinds of databases, APIs, and other systems. There may be situations though where there is no existing connector matching your requirements, in which case you can implement your own custom connector using the Kafka Connect framework. Naturally, this raises the question of how to test such a Kafka connector, making sure it propagates the data between the connected external system and Kafka correctly and completely. In this blog post I'd like to focus on testing approaches for Kafka Connect source connectors, i.e. connectors like Debezium, which ingest data from an external system into Kafka. Very similar strategies can be employed for testing sink connectors, though.

## Three Plates

DevFeed: [Three Plates](<https://devfeed.tech/articles/three-plates-33415.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2022/04/11/three-plates>)

Published: 2022-04-11T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Formal methods](<https://devfeed.tech/topics/formal-methods.md>)

Tags: [formal-methods](<https://devfeed.tech/tags/formal-methods.md>), [tdd](<https://devfeed.tech/tags/tdd.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

The article uses the three-plates method as an analogy for unit testing and test-driven development, describing iterative refinement of test and production code. It also notes the importance of broader quality practices, including functional testing and possibly formal methods.

### Source excerpt

"Why don't we test our tests?". It's like the three plates method. Take test code and prod code and grind them against each other until the blemishes are ground smooth. That's unit testing.

## 3 Guidelines to Reduce Implementation Flaws

DevFeed: [3 Guidelines to Reduce Implementation Flaws](<https://devfeed.tech/articles/3-guidelines-to-reduce-implementation-flaws-26217.md>)

Original publisher: [Read original article](<https://medium.com/groupon-eng/3-guidelines-to-reduce-implementation-flaws-958511e2a82f?source=rss----5c13a88f9872---4>)

Author: Pratik Shekhar

Published: 2021-09-03T17:06:05Z

Content type: opinion

Language: en

Sources: [Groupon Engineering -- Medium](<https://devfeed.tech/sources/groupon-engineering-medium.md>)

Topics: [Code quality](<https://devfeed.tech/topics/code-quality.md>), [coding](<https://devfeed.tech/topics/coding.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [code-quality](<https://devfeed.tech/tags/code-quality.md>), [coding](<https://devfeed.tech/tags/coding.md>), [coding-style](<https://devfeed.tech/tags/coding-style.md>), [function](<https://devfeed.tech/tags/function.md>), [google](<https://devfeed.tech/tags/google.md>), [implement](<https://devfeed.tech/tags/implement.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [team](<https://devfeed.tech/tags/team.md>), [tech](<https://devfeed.tech/tags/tech.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

The article presents coding guidelines intended to reduce implementation flaws. It emphasizes code quality, readability, team practices, breaking functions into smaller single-purpose units, and making code easier to test and reuse.

### Source excerpt

3 Rules/Guidelines to Reduce Implementation Flaws When I hear the word "rule", I think back to grade school. "Be quiet when the teacher is talking." "No interrupting, you must raise your hand with a question." But what makes this different than following a set of guidelines? There was always that one kid who never listened to the rules. In coding, we may talk about rules, whereas in reality, we're following some sort of guideline. Think of guidelines as a scene from the Ghostbusters movie when Bill Murray told Sigourney Weaver that he never sleeps with a possessed woman. Then she kissed him and he said, "Actually, this is more of a guideline than a rule." A standard guideline is important because it helps improve the existing code quality, a guideline also makes it more readable and also somewhere sets the team culture. Over the last few years of gaining more experience in coding, rules have changed into guidelines; however, there are three top guidelines I always follow. After being curious if other colleagues follow any specific coding guidelines, I reached out to several within Groupon and companies like Google, Morgan Stanley, Apple, Lutron, L Brands, Capitol One, GoPuff, and Vertex Inc. Specifically, I asked if they follow any guidelines that reduce implementation flaws. To not much surprise, we all follow similar guidelines. Take a moment and ask yourself, do you have any specific rules or guidelines? We may all have similar guidelines that we follow, mine are listed below- Guideline 1 -> Break down your functions My first rule is merely following the single responsibility principle. A function should be responsible for doing one specific thing. If a function has too many responsibilities, then it should be broken down into multiple smaller functions. Its logic is limited in scope, which makes it easier to implement and test its end-to-end functionality. A friend of mine once said that "If the function you end up unit testing requires tests for multiple separat

## Introducing JfrUnit 1.0.0.Alpha1

DevFeed: [Introducing JfrUnit 1.0.0.Alpha1](<https://devfeed.tech/articles/introducing-jfrunit-1-0-0-alpha1-18835.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/introducing-jfrunit-1-0-0-alpha1/>)

Published: 2021-08-04T17:10:00Z

Content type: release

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [JDK Flight Recorder](<https://devfeed.tech/topics/jdk-flight-recorder.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Java](<https://devfeed.tech/topics/java.md>), [Quarkus](<https://devfeed.tech/topics/quarkus.md>), [Groovy](<https://devfeed.tech/topics/groovy.md>), [Maven](<https://devfeed.tech/topics/maven.md>)

Tags: [groovy](<https://devfeed.tech/tags/groovy.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk-flight-recorder](<https://devfeed.tech/tags/jdk-flight-recorder.md>), [junit](<https://devfeed.tech/tags/junit.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [maven-central](<https://devfeed.tech/tags/maven-central.md>), [quarkus](<https://devfeed.tech/tags/quarkus.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

The article announces JfrUnit 1.0.0.Alpha1, a JUnit extension for asserting JDK Flight Recorder events in unit tests. It describes uses including validating custom events, detecting potential performance regressions, and white-box testing with JMC Agent, and outlines setup and usage with Maven, Quarkus, Groovy, and Spock examples.

### Source excerpt

Table of Contents Getting Started With JfrUnit Groovier Tests With Spock Outlook Unit testing, for performance It's with great pleasure that I'm announcing the first official release of JfrUnit today! JfrUnit is an extension to JUnit which allows you to assert JDK Flight Recorder events in your unit tests. This capability opens up a number of interesting use cases in the field of testing JVM-based applications: You can use JfrUnit to ensure your application produces the custom JFR events you expect it to emit You can use JfrUnit to identify potential performance regressions of your application by means of tracking JFR events e.g. for garbage collection, memory allocation and network I/O You can use JfrUnit together with JMC Agent for whitebox tests of your application, ensuring specific methods are invoked with the expected parameters and return values

## Testing Apollo Client Applications

DevFeed: [Testing Apollo Client Applications](<https://devfeed.tech/articles/testing-apollo-client-applications-23430.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/introduction-to-testing>)

Author: Khalil Stemmler

Published: 2021-04-22T17:54:59Z

Content type: tutorial

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [apollo-client](<https://devfeed.tech/topics/apollo-client.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [React](<https://devfeed.tech/topics/react.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>)

Tags: [apollo-client](<https://devfeed.tech/tags/apollo-client.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [integration](<https://devfeed.tech/tags/integration.md>), [react](<https://devfeed.tech/tags/react.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

A tutorial on testing Apollo Client applications with unit, integration, and end-to-end tests. It explains what each approach tests, their tradeoffs, and how they fit into a comprehensive testing strategy, with examples focused on React components and mocked GraphQL responses.

### Source excerpt

Testing is likely one of the most important (yet challenging) aspects of developing high-quality software that can safely withstand change. Tests give you confidence that your code works and will continue to work -- even as you add new features over time. This article will discuss three different approaches to testing Apollo Client applications: unit, integration, and end-to-end tests. We'll discuss what they test, their tradeoffs, and where they belong within a comprehensive testing strategy.

## Unit Testing Custom Lint Checks

DevFeed: [Unit Testing Custom Lint Checks](<https://devfeed.tech/articles/unit-testing-custom-lint-checks-22847.md>)

Original publisher: [Read original article](<http://androidessence.com/unit-testing-custom-lint-checks/>)

Author: Adam McNeilly

Published: 2021-03-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Android Essence](<https://devfeed.tech/sources/android-essence.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

A tutorial on unit testing custom Android lint checks. It explains the required dependencies, test setup, mock XML or Java/Kotlin inputs, optional configuration, task execution, and assertions for successful lint results.

### Source excerpt

In our previous post we looked at writing a custom lint check to enforce usages of a custom view instead of an Android framework implementation. In this post, we'll go over how to unit test such a scenario, and take the opportunity to look at some additional options of unit testing with lint as well.

## Announcing Firebase Live

DevFeed: [Announcing Firebase Live](<https://devfeed.tech/articles/announcing-firebase-live-16341.md>)

Original publisher: [Read original article](<https://firebase.blog/posts/2020/05/announcing-firebase-live>)

Author: David East

Published: 2020-05-26T00:00:00Z

Content type: news

Language: en

Sources: [Firebase Blog](<https://devfeed.tech/sources/firebase-blog.md>)

Topics: [Firebase](<https://devfeed.tech/topics/firebase.md>), [Security](<https://devfeed.tech/topics/security.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Appwrite](<https://devfeed.tech/topics/appwrite.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Google Analytics](<https://devfeed.tech/topics/google-analytics.md>), [Unity](<https://devfeed.tech/topics/unity.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [demo](<https://devfeed.tech/tags/demo.md>), [developer-community](<https://devfeed.tech/tags/developer-community.md>), [emulator-suite](<https://devfeed.tech/tags/emulator-suite.md>), [event](<https://devfeed.tech/tags/event.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [firebase-live](<https://devfeed.tech/tags/firebase-live.md>), [google-analytics](<https://devfeed.tech/tags/google-analytics.md>), [talks](<https://devfeed.tech/tags/talks.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [unity](<https://devfeed.tech/tags/unity.md>), [videos](<https://devfeed.tech/tags/videos.md>)

### AI overview

Firebase announces Firebase Live, a five-part weekly web series for developers featuring talks, tips, technical tutorials, product updates, and live questions with Firebase experts. The series was postponed to June 23 and includes sessions on testing, the Emulator Suite, authentication, Google Analytics, and Unity.

### Source excerpt

News, tutorials, and updates from the Firebase team.

## Unit Testing Best Practices

DevFeed: [Unit Testing Best Practices](<https://devfeed.tech/articles/unit-testing-best-practices-38633.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2020_03_19_unit_testing_best_practices/>)

Published: 2020-03-19T00:00:00Z

Content type: opinion

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Development](<https://devfeed.tech/topics/development.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Code review](<https://devfeed.tech/topics/code-review.md>), [ci](<https://devfeed.tech/topics/ci.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [code-review](<https://devfeed.tech/tags/code-review.md>), [development](<https://devfeed.tech/tags/development.md>), [quality](<https://devfeed.tech/tags/quality.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

An opinionated set of best practices for writing unit tests that are trustworthy, readable, maintainable, isolated, and focused on a single use case. The article also explains how tests support requirements validation, defect detection, safer refactoring, architecture, code review, and automated execution on CI.

### Source excerpt

Source Disclaimer: This is a set of things I consider very useful when writing unit tests. I call them best practices because they allow me to write good, quality tests that are easier to read, more maintainable, and better describe business needs. These points might be subjective, you might have other opinions or have more items. That's fine. Do not hesitate to put your opinions in the comments. Tests in the Development Process Tests are very important in the development process. They give you a lot of benefits:

## Technical Debt and Legacy Code: Techniques for Improving Code Health

DevFeed: [Technical Debt and Legacy Code: Techniques for Improving Code Health](<https://devfeed.tech/articles/technical-debt-guru-level-unlocked-34665.md>)

Original publisher: [Read original article](<http://fernandocejas.com/2019/06/13/technical-debt-guru-level-unlocked/>)

Author: Fernando Cejas (me@fernandocejas.com)

Published: 2020-03-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Fernando Cejas Blog](<https://devfeed.tech/sources/fernando-cejas-blog.md>)

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [clean-code](<https://devfeed.tech/tags/clean-code.md>), [culture](<https://devfeed.tech/tags/culture.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [linux](<https://devfeed.tech/tags/linux.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [scala](<https://devfeed.tech/tags/scala.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [strategies](<https://devfeed.tech/tags/strategies.md>), [technical](<https://devfeed.tech/tags/technical.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This article examines technical debt and legacy code in software projects, defines legacy code as code without tests, and discusses techniques and strategies for assessing and addressing code health and maintenance challenges.

### Source excerpt

As **Software Engineers** we know that **Technical Debt** and **Legacy Code** are familiar concepts we have to live with. **Code healthiness and maintenance are challenging**, so let's dive into **tips and techniques on how to effectively address this problem.**

[Next page](<https://devfeed.tech/topics/unit-testing.md?cursor=WyIyMDIwLTAzLTEzVDAwOjAwOjAwKzAwOjAwIiwgImUzMWE5NzI2LTczNjktNDZlMS1hMWQwLWU1NDg2YzRiMjNjYSJd>)