我正在使用Visual Studio 2012下的Microsoft Unit Test框架来测试一个C#类,它代表某种数据库的数据访问层。
为了能够对它进行单元测试,我创建了一个类,而不是所说的数据库。 我的测试类具有以下结构:
[TestClass]
public class UnitTests {
MyStub stub;
[TestInitialize]
public void InitializeContext() { // Construct stub }
[TestCleanup]
public void CleanupContext() { // Dispose stub }
[TestMethod]
public void Test1() { ... }
[TestMethod]
public void Test2() { ... }
...
}
工作正常。
我现在想编写第二个测试类,它针对不同的存根执行相同的测试,因此我想重用代码,但我无法通过继承实现这一点(继承UnitTests
并覆盖InitializeContext()
和CleanupContext()
),因为TestMethod
属性似乎不可继承。
有没有实用的方法来实现这一目标?如果是这样,哪一个?
答案 0 :(得分:0)
对我而言,您似乎拥有一组属于您希望在不同环境中运行的“测试集”的测试。
我个人通过在实际测试之外实施测试来解决这个问题,并使用参数调用外部实现的测试:
[TestClass]
public class UnitTests1 {
MyStub stub;
[TestInitialize]
public void InitializeContext() { // Construct stub }
[TestCleanup]
public void CleanupContext() { // Dispose stub }
[TestMethod]
public void Test1() { StubTests.TestMyStub(stub); }
[TestMethod]
public void Test2() { StubTests.TestMyStub2(stub); }
...
}
[TestClass]
public class UnitTests2 {
MyStub stub;
[TestInitialize]
public void InitializeContext() { // Construct stub }
[TestCleanup]
public void CleanupContext() { // Dispose stub }
[TestMethod]
public void Test1() { StubTests.TestMyStub(stub); }
[TestMethod]
public void Test2() { StubTests.TestMyStub2(stub); }
...
}
“StubTests”类不使用任何注释,并使用函数中的参数引用外部依赖项(例如,移交存根)。