针对不同实现的相同单元测试

Ale*_*lex 15 java mstest

假设我有两种搜索算法的实现,它们为同一输入返回相同的结果.它们都实现了相同的接口.

我如何使用单个[TestClass]来测试两个实现,而不是创建两个最终具有相同逻辑的测试文件?

我可以告诉MSUnit使用不同的构造函数参数两次启动其中一个测试吗?
也许我应该(n)以某种方式注入它?

tal*_*eth 12

使用抽象测试类:

[TestClass]
public abstract class SearchTests
{
    private ISearcher _searcherUnderTest;

    [TestSetup]
    public void Setup()
    {
        _searcherUnderTest = CreateSearcher();
    }

    protected abstract ISearcher CreateSearcher();

    [TestMethod]
    public void Test1(){/*do stuff to _searcherUnderTest*/ }

    // more tests...

    [TestClass]
    public class CoolSearcherTests : SearcherTests
    {
         protected override ISearcher CreateSearcher()
         {
             return new CoolSearcher();
         }
    }

    [TestClass]
    public class LameSearcherTests : SearcherTests
    {
         protected override ISearcher CreateSearcher()
         {
             return new LameSearcher();
         }
    }
}
Run Code Online (Sandbox Code Playgroud)