假设我有两个搜索算法的实现,它们为相同的输入返回相同的结果。它们都实现相同的接口。
我如何使用单个[TestClass]来测试两种实现,而不是创建两个最终具有相同逻辑的测试文件?
我可以告诉MSUnit用不同的构造函数参数启动一个测试两次吗?
也许我应该以某种方式注入它?
发布于 2017-05-20 02:36:08
基于我的测试的澄清。
只要抽象类和具体类在同一个程序集中,公认的答案(使用抽象类)就可以工作。
如果您希望将抽象类和具体类放在不同的程序集中,不幸的是,KarlZ提到的方法似乎是必要的。不知道为什么会这样。在这种情况下,TestExplorer不会显示TestMethod。
而且,可接受的答案使用了嵌套在抽象类中的具体类。这似乎不是必需的。
使用MSTestV2 (1.1.17)、VS2017进行测试。下面是使用的示例类。
Assembly 1
[TestClass]
public abstract class SampleExternal
{
[TestMethod]
public void SampleTest01()
{
Assert.IsTrue(false, this.GetType().Name);
}
}
Assembly 2
[TestClass]
public abstract class Sample
{
[TestMethod]
public void SampleTest01()
{
Assert.IsTrue(false, this.GetType().Name);
}
[TestClass]
public class SampleA : Sample
{
}
}
[TestClass]
public class SampleB : Sample
{
}
[TestClass]
public class SampleC : SampleExternal
{
}
[TestClass]
public class SampleD : SampleExternal
{
}使用这些测试,SampleA和SampleB的测试将会执行(并且设计失败),但是SampleC & SampleD不会。
https://stackoverflow.com/questions/15569732
复制相似问题