gpt4 book ai didi

c# - 是否有一种实用的方法可以针对 Microsoft 单元测试框架中的不同 stub 重用一组测试方法?

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:44 24 4
gpt4 key购买 nike

我正在使用 Visual Studio 2012 下的 Microsoft 单元测试框架来测试代表某种数据库的数据访问层的 C# 类。

为了能够对其进行单元测试,我创建了一个类使用的 stub 而不是所述数据库。我的测试类具有以下结构:

[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() { ... }

...
}

它工作正常。

我现在想编写第二个测试类,对不同的 stub 执行相同的测试,因此我想重用代码,但我无法通过继承(继承 UnitTests 并覆盖 InitializeContext()CleanupContext()),因为 TestMethod 属性似乎不可继承。

是否有一种切实可行的方法来实现这一点?如果有,是哪一个?

最佳答案

在我看来,您似乎有一组测试属于您想要在不同环境中运行的“测试集”。

我个人通过在实际测试之外实现测试来解决这个问题,并使用参数调用外部实现的测试:

[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”类不使用任何注释,而是使用函数中的参数引用外部依赖项(例如移交 stub )。

关于c# - 是否有一种实用的方法可以针对 Microsoft 单元测试框架中的不同 stub 重用一组测试方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28219245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com