Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用void方法进行Junit测试_Java_Junit_Void - Fatal编程技术网

Java 用void方法进行Junit测试

Java 用void方法进行Junit测试,java,junit,void,Java,Junit,Void,我必须为下面的类创建一个JUnit测试,但是我不能为方法deposit进行测试 public class Account { private int balance; private float Interest_Rate =10; public Account() { this.balance = 0; } public void deposit(int amount) { balance = balanc

我必须为下面的类创建一个JUnit测试,但是我不能为方法
deposit
进行测试

public class Account {
    private int balance;
    private float Interest_Rate =10;

    public Account() {
        this.balance = 0;
    }
    public void deposit(int amount) {       
        balance = balance+amount;
    }
}

@Test
public void testdeposit() {
    Account i = new Account();
    assertEquals("Result",75,i.deposit(25));
}

您可以在
Account
类中添加
getBalance()
方法:

 public int getBalance(){
      return balance;
    }
并使用它进行断言:

@Test
public void deposit(){
    Account i = new Account();
    i.deposit(25)
    assertEquals("Result",25, i.getBalance());
}
通常,可以评估和讨论仅在单元测试期间使用的添加方法。

但是在这里,
getBalance()
似乎是不可避免的。

测试私有字段/方法没有意义

在您的情况下,
balance
是“只写”变量;它应该有公共访问器(如上所述),或者字段应该用在其他方法中,如

public int income() {
  if(balance == 0 ) return 0;
  if(balance < 100) return 10;
  if(balance < 1000) return 15;
  return 20;
}

不要测试实现;测试接口。

方法中可以有一个System.out.println,并告诉JUnit测试请求标准输出:

private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
然后

@Before
public void setUpStreams() {
    System.setOut(new PrintStream(outContent));
}

@After
public void cleanUpStreams() {
    System.setOut(null);
}
最后

assertEquals(<here goes your expected string>, outContent.toString());
assertEquals(,outContent.toString());

创建一个get方法来访问余额。在调用之前和之后断言存款。您的问题是…我编写的测试检查代码无法运行,,我在“assertEquals”处收到一个错误,因为方法deposit返回void,,那么如何使它工作?
assertEquals(<here goes your expected string>, outContent.toString());