如果使用 xunit
可以实现以下代码(实际上是想法),有人会问吗:
public class RepositoryTester {
private IRepository repository;
public RepositoryTester(IRepository repository) {
this.repository = repository;
)
[Fact] // Analogue of [Test] in other test packages.
void CanDoWhatever() {
// Test code
}
}
现在,如果我尝试运行所有单元测试,只要 xunit
尝试通过调用 new RepositoryTester() 创建对象 RepositoryTester
,它就会失败
(它调用不带参数的构造函数)。
我想做的事情可以这样等价地表达:
var tester1 = new RepositoryTester(new SQLRepository(...));
var tester2 = new RepositoryTester(new InMemoryRepository(...));
tester1. RUN_ALL_TESTS();
tester2. RUN_ALL_TESTS();
有人知道以下行为是否可能吗?(我真的希望通过它的界面对每个可测试存储库使用相同的测试包)。
谢谢
您可以将 RepositoryTester
抽象化,并为每种类型的存储库创建一个派生类,在无参数构造函数中创建适当的 IRepository。继承的测试方法将为每个具体的子类运行。
我是一名优秀的程序员,十分优秀!