gpt4 book ai didi

c# - 单元测试依赖方法

转载 作者:可可西里 更新时间:2023-11-01 09:06:57 24 4
gpt4 key购买 nike

我想对我创建的类的方法进行单元测试,但此方法需要先调用另一个方法。示例:

// This would work
MyClass myClass1 = new MyClass(mockDevice);
myClass1.Run(myDatastructure);
myClass1.Stop();

// This would throw an InvalidOperationException
MyClass myClass2 = new MyClass(mockDevice);
myClass2.Stop();

Run 正在硬件设备上开始操作,而 Stop 当然会尝试停止该操作(发送重置命令并启动超时计时器) .

无论如何,我想测试调用 Stop 的各种后置条件,但我不想调用 Run,因为我正在测试 Stop - 不是 Run!我想要这样的东西:

MyClass myClass = new MyClass(mockDevice);
myClass.Stop();
Assert.IsTrue(mockDevice.ResetCalled);

到目前为止,我只看到一种可能的解决方案,那就是创建一个继承自 MyClassTestableMyClass,这使得设置正确的内部状态成为可能MyClass 实例在调用 Stop 之前。这个解决方案的问题是我必须更改我的 MyClass - 实现以拥有 protected 成员而不是私有(private)成员,而且我喜欢必须改变的想法为了测试它的实现!

我应该使用这个解决方案吗?我的设计是否有错误,或者是否有更聪明的方法?

最佳答案

据我所知,您已经在测试 Stop 的两种使用方式(有和没有运行操作)。只要 mockDevice 正常工作,在我看来您就是在合理地测试它。理想情况下,您应该能够验证发送到设备等的命令(大多数模拟框架将使这些变得简单)。

关于c# - 单元测试依赖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/625477/

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