在撤销变量的储蓄账户中,我需要确保它在一个月内不能超过3个 . 我检查了setter中的条件,但我不确定如何在JUintTesting中进行测试 . 因为它们都是void方法,并且测试方法返回一个布尔值,我得到的错误是下面是我的代码 .
public void setNumberWithdrawals(int w)
{
if (getNumberWithdrawals() > 3)
{
System.out.println("You already have more than 3 withdraw!!");
}
else
{
numberWithdrawals = w;
}
}
用于JUNit测试
SavingsAccount sa1;
@Test
public void testsetNumberWithdrawals()
{
assertEquals(true, sa1.setTest(4));
}
我期望它返回false,因为我传递4但我继续获取void和返回类型预期错误,我甚至尝试将值分配给另一个int变量的数字并测试它但我仍然得到错误 .
1 回答
假设:您正在使用JUnit 4(假设您提供的代码使用的是@Test注释,这似乎是一个安全的假设) .
你会想要你的测试类这样的东西:
Other thoughts:
鉴于您在github上的问题和代码中发布的代码,有些事情似乎有点奇怪 . 可能只是某些代码仍然缺失,但我想指出一些突出的事情:
你发布了这个代码:
assertEquals(true, sa1.setTest(4));
现在根据我在github上读到的内容,
sa1
是SavingsAccount
的一个实例,但我没有在任何地方看到这个setTest(...)
方法的定义 . 我确实看到了SavingsAccount extends Account
所以我想setTest(...)
可以在Account
类中定义 . 这个突出的原因是你说你试图测试SavingsAccount.setNumberWithdrawals(...)
但你没有在测试中调用setNumberWithdrawals
. 同样,我想这个setTest
方法可以间接调用setNumberWithdrawals
但是你发布的所有东西都不清楚 .你在问题中说:
您拥有的逻辑是
if (getNumberWithdrawals() > 3)
,这意味着提取的数量必须大于3才能触发此逻辑 . 这似乎违反了您的要求 .