What do you suggest to a developer to improve testability?
sobes.tech AI
Answer from AI
To improve testability of code in C#, the following approaches can be suggested:
-
Dependency Injection — instead of creating dependencies inside the class, pass them through the constructor or properties. This makes it easy to replace real dependencies with mocks or stubs in tests.
-
Interfaces — program against interfaces rather than concrete implementations. This simplifies the creation of test doubles.
-
Separation of concerns — follow the Single Responsibility Principle (SRP) so that classes and methods are small and easily testable.
-
Avoid static methods and singletons — they hinder isolation and mocking.
-
Use mocking frameworks — such as Moq, NSubstitute, which simplify creating stubs.
Example of dependency injection:
public interface ILogger {
void Log(string message);
}
public class Service {
private readonly ILogger _logger;
public Service(ILogger logger) {
_logger = logger;
}
public void DoWork() {
_logger.Log("Work started");
// ...
}
}
In tests, you can pass a mock ILogger to verify calls without actual logging.