JUnit =红色条,即使我的assertEquals是正确的

时间:2012-10-07 08:02:49

标签: java junit

package dpackage;

public class MyCalculator {

    public int getSum(int a, int b, int sum) {
        sum = a+b;
        return sum;
    }

}

package dpackage;

import junit.framework.TestCase;

public class MyCalculatorTest extends TestCase {
    MyCalculator calc = new MyCalculator();

    protected void setUp() throws Exception {
        super.setUp();
    }

    protected void tearDown() throws Exception {
        super.tearDown();
    }
    protected void getSum(){
        int a=2;
        int b=3;
        int sum = a+b;
        assertEquals(5, calc.getSum(a, b, sum));
    }

}

3 个答案:

答案 0 :(得分:6)

原因有点微妙。将代码更改为以下以获得绿色条。

  public void testGetSum()

在Junit 3中,测试方法应以test开头,并为public

如果可能的话,我会建议您继续使用Junit 4,但不会施加此类限制。

使用@Test@Before@After之类的注释,您的代码将更加简单易读。

同样将sum传递给方法,然后重新计算它看起来多余。坚持在getSum方法中计算它。

答案 1 :(得分:3)

您没有任何名称以“test”开头的方法。您可以在MyCalculatorTest类中将“getSum”方法重命名为“testGetSum”。

答案 2 :(得分:2)

这个定义有什么意义?

public int getSum(int a, int b, int sum) {
    sum = a+b;
    return sum;
}

只需使用:

public int getSum(int a, int b) {
    return a + b;
}

public void testGetSum() { <-- note test in front
    int a=2;
    int b=3;
    assertEquals(5, calc.getSum(a, b));
}

请注意,在方法前面没有test的eclipse报告的错误是没有检测到测试类。