单元测试中的依赖注入

luc*_*cas 1 c# unit-testing dependency-injection

我已经实现了基于数组的堆栈数据结构以及相应的单元测试.这个Stack实现了我的IStack接口.所以目前,我的UT类看起来像这样:

[TestClass]
public class Stack_ArrayBased_Tests
{      
    //check against empty collection
    [TestMethod]
    public void IsEmpty_NoElements()
    {
        var myStack = new Stack_ArrayBased_Example1(10);

        var exp = true;
        var act = myStack.IsEmpty();
        Assert.AreEqual(exp, act);
    }
Run Code Online (Sandbox Code Playgroud)

现在,我即将实现基于链接列表的Stack.此Stack将继承自相同的IStack接口.

我想单独测试链表Stack.由于两者都是从相同的接口继承,我应该能够利用已经实现的单元测试,以防止不必要的代码重复.

创建两个单独的Unit Test类的最佳方法是什么,一个用于基于Array的Stack,另一个用于基于Linked List的Stack,它们将使用相同的Unit Test方法?我假设依赖注入将是一个答案,但我会怎么做呢?

And*_*niu 6

在测试时,依赖注入永远不是答案.

你没有测试抽象,这是不可能的,你测试具体的实现.但是,您可以模拟抽象,接口和抽象类.

您可以创建一些类,其唯一目的是重用代码,然后从测试方法中调用该类,这是可以完全可行的.

对于每个具体实现,您仍然需要两个测试类,并且都要调用您创建的这个新类.这可以避免代码重复.