Java 用void方法进行Junit测试
我必须为下面的类创建一个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
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());