大家晚上好,
我是Java的初学者,我已经做了一些研究,以便在JUnit中用Java中的方法进行极其简单的测试。整个班级看起来像这样:
package calculator;
import java.util.Scanner;
public class Calculator
{
private double accumulator;
// Default Constructor
public Calculator()
{
}
// Parameterized Constructor
public Calculator(double initialValue)
{
accumulator = initialValue;
}
// Other Methods
public void add(double number)
{
accumulator += number;
}
public void subtract(double number)
{
accumulator -= number;
}
public void multiply(double number)
{
accumulator *= number;
}
public void divide(double number)
{
accumulator /= number;
}
public void sqrt()
{
accumulator = Math.sqrt(accumulator);
}
public void setAccumlator(double accumulator)
{
this.accumulator = accumulator;
}
public double getAccumulator()
{
return accumulator;
}
@Override
public String toString()
{
return "Result:" + accumulator;
}
}
我想测试方法:
public void add(double number)
{
accumulator += number;
}
所以这就是我所做的:
package calculator;
import static org.junit.Assert.*;
import org.junit.Test;
public class testAdd
{
@Test
public void add(double number)
{
Calculator test = new Calculator(10.0);
number = test.add(5.0);
assertEquals(15.0, test);
}
}
代码行:
number = test.add(5.0);
给我以下错误:类型不匹配。无法从void转换为double。
我应该做些什么?我花了无数个小时试图解决它,但到目前为止没有运气......
此致
Pill Beans
答案 0 :(得分:1)
函数add
的返回类型在类定义中是无效的。将其更改为double
并返回值。
或者只需将number = test.add(5.0);
更改为test.add(5.0);
,然后您就可以从accumulator
对象中获得test
的值。
答案 1 :(得分:1)
你的"添加"方法返回void,因此您无法将其转换为double值。您的JUnit测试应如下所示:
@Test
public void add(){
Calculator test = new Calculator(10.0);
test.add(5.0);
assertEquals(15.0, test.getAccumulator());
}
此外,您不需要将值传递给测试方法。