-1

我正在为现有项目创建单元测试。

  • n1并且n2是输入数字
  • op是主程序中 switch case 中的操作数

问题出在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());
}
4

1 回答 1

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 = ...
于 2013-06-12T13:32:44.547 回答