【发布时间】:2019-07-15 21:39:23
【问题描述】:
我正在用 C# 开发一个 Windows 窗体应用程序。实例化表单时,我在构造函数中初始化了一些硬件类。 hardware1, Hardware2, Hardware3 代表我在软件中实例化的硬件类。
public partial class Form1 {
Hardware1 a;
Hardware2 b;
Hardware3 c;
public Form1() {
// initialize hardware1,2 and 3 using native dll calls of a,b and c
}
我想在我的主窗体中对此方法进行单元测试。
public int MyMethod(int percent, ref double power) {
for(int i =0; i<3; i++)
{
if(a.isValid)
{
b.DoThing1(percent);
b.DoThing2(true);
c.DoSomething1();
double val = C.DoSomething2();
if (val != -500)
{
power = val;
return 0;
}
}
else
return 1;
}
return 2;
}
困难在于 a.IsValid 是通过一些我必须模拟的 dll 调用设置的。 b.DoThing1 和 C.DoThing2 还调用了一些我也必须模拟的 dll 函数。一种可能性是重载表单方法构造函数。然后我可以模拟每个类 dll 的
Form1 (Hardware1 a, Hardware2 b, Hardware3 c) {
this.a = a;
this.b = b;
this.c = c;
}
或者我应该有 Hardware1 a、Hardware2 b 和 Hardware3 c 的接口吗?我读到通常最好有接口来代替具体的类。
对 Form1 myMethod 进行单元测试的良好软件实践是什么?
【问题讨论】:
-
在 softwareengineering.stackexchange.com 上有一个关于为单元测试使用单独的构造函数的问题。 softwareengineering.stackexchange.com/questions/385804/…
标签: c# visual-studio unit-testing