如何测试(抽象)类中接口方法实现的行为,而不必将测试复制到每个类?单元测试接口的实现,怎么做?
我有(抽象)类实现多个接口。我知道每个接口应该如何表现,我在测试方法中定义了这一点,以便我不必为接口的每个实现手动重复这些测试。
我可以为每个接口创建一个抽象类与测试,并有一个抽象方法CreateSUT()
创建具体类的新实例。但是之后我不得不为每个类实现的接口创建一个新的类,因为C#不支持多继承。有一个更好的方法吗?
另请注意,我也想测试在具有几个非抽象子类的抽象类中实现的接口,这会使事情稍微复杂化。
这个问题是不是约我是否应该单元测试我的接口实现。意见不同,我决定这样做,因为我知道接口实现应该如何表现(从不返回空值,返回只读集合等),并将这些测试放在一起使我更容易测试他们的实现,但是可能有很多。
那么有三个选项1.不要测试界面 - 你拒绝。 2.测试每个派生类。 3.只测试一个派生类。 – gdoron 2012-03-22 22:09:12
我不太明白你在“我可以创建...”段落中所说的话。您不必在界面中包含工厂方法。我也不明白为什么你遇到了“缺乏多重继承”的问题。你仍然可以有一个类实现几个接口,这似乎是你的情况。 – Tormod 2012-03-22 22:59:09