我正在为现有项目创建单元测试。
n1
和n2
是输入数字op
是主程序问题在于actual
。我无法匹配预期值和实际值,因为我收到错误cannot implicitly convert void to int
。
我的单元测试:
[TestMethod()]
public void docalcTest(int actual)
{
Form1 target = new Form1(); // TODO: Passenden Wert initialisieren
double n1 = 15; // TODO: Passenden Wert initialisieren
double n2 = 3; // TODO: Passenden Wert initialisieren
int op = 2; // TODO: Passenden Wert initialisieren
int expected = 5;
actual = target.docalc(n1, n2, op);
Assert.AreEqual(expected,actual);
}
docalc的代码:
public void docalc(double n1, double n2, int op)
{
result = 0;
setText("clear");
switch (op)
{
case 1:
result = n1 + n2;
break;
case 2:
result = n1 - n2;
break;
case 3:
result = n1 * n2;
break;
case 4:
result = n1 / n2;
break;
}
setText(result.ToString());
}
答案 0 :(得分:4)
您的方法target.docalc()
是一个void方法,而actual
是一个int。正如编译器所说,您无法将void
分配给int
。
根据你的评论(你真的应该编辑你的问题),你的docalc()
看起来像这样:
public void docalc(double n1, double n2, int op)
{
result = 0;
...
setText(result.ToString());
}
您必须将方法的返回类型更改为int
,并返回结果:
public int docalc(double n1, double n2, int op)
{
int result = 0;
...
return result;
}
旁注,你为什么要这样做?
[TestMethod()]
public void docalcTest(int actual)
{
...
actual = ...
测试方法将在没有参数的情况下调用,因此在那里有点无用。您可能希望将其更改为:
[TestMethod()]
public void docalcTest()
{
...
int actual = ...
答案 1 :(得分:0)
我猜docalc返回void ...将返回类型更改为int,你应该没问题