Java JUnit Eclipse错误:类型不匹配无法从void转换为double

时间:2016-01-31 22:59:58

标签: java eclipse junit

大家晚上好,

我是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

2 个答案:

答案 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());
}

此外,您不需要将值传递给测试方法。