如何使用 Visual Studio 和 C# 实现测试装置

问题描述 投票:0回答:1

我是 C# 新手,我正在使用 Visual Studio 2012 中内置的测试支持来为新库采用测试驱动开发。我已经为 USB SPI 适配器实现了一些测试用例,并发现自己为每个测试用例复制了大量“启动”和“拆卸”代码。我习惯使用 python pytest 及其“固定装置”来帮助减少重复的测试代码。到目前为止,我还无法找到与 C# 和 Visual Studio 类似的概念。

考虑以下情况,其中多个测试用例必须在每次运行测试时列出并关闭 SPI 端口。如何创建相当于“夹具”的东西,在其中编写一次启动和拆卸代码以便与每个测试用例一起运行?谢谢。

namespace CheetahTestSuite
{
    [TestClass]
    public class CheetahTest
    {

        [TestMethod]
        public void TestOpenPort()
        {

            // Ask the system for the Cheetah devices found on the system
            CheetahSPI spi = new CheetahSPI();
            string found_devices = spi.ListDevices("not used");

            ...

            // Close the port
            string close_success = spi.ClosePort();
            Assert.AreEqual(close_success, "0,OK");

        }

        [TestMethod]
        public void TestConfigureSPIPort()
        {

            // Ask the system for the Cheetah devices found on the system
            CheetahSPI spi = new CheetahSPI();
            string found_devices = spi.ListDevices("not used");

            ....

            // Close the port
            string close_success = spi.ClosePort();
            Assert.AreEqual(close_success, "0,OK");

        }

    }

}

我尝试使用 C# 和 Visual Studio 研究装置。我期望有一种方法来实现“固定装置”以减少重复的代码。

c# visual-studio unit-testing testing fixtures
1个回答
0
投票

要使用常见的初始化和反初始化代码,请使用构造函数和 Dispose 方法:

[TestClass]
public sealed class CheetahTest : IDisposable
{
    private CheethSpi _testee;
    public CheetahTest()
    {
        _testee = new CheetahSPI();
        string found_devices = _testee.ListDevices("not used");
        // ... more init code
    }
    
    [TestMethod]
    public void Foo()
    {
        _testee.DoSomeTest();
    }

    public void Dispose()
    {
        _testee.Dispose();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.