【发布时间】:2021-02-16 14:58:53
【问题描述】:
我想使用 Junit 测试框架测试我的 java 代码。在我的源代码中,我使用 try 和 catch 块来处理异常。在我的测试方法中,我想测试这种方法。如果我的源代码返回一些异常并且它在我的测试方法中匹配,我的测试将通过,否则失败。但是我的代码没有通过这个测试。
我找到了解决方法,但我想使用 try 和 catch 块。我也来分享一下。
不工作 我的源代码(我想测试这个方法)
public boolean isCreateAccount(String amount) {
try {
Double balance = Double.parseDouble(amount);
if(balance < 0)
throw new Exception();
} catch (Exception e) {
System.out.println("WARNING: Invalid amount!");
}
return false;
}
这是我在 JUnit 中的测试方法
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public void testCreateAccountInvalidAmount() {
expectedException.expect(Exception.class);
accountServices.isCreateAccount("-100");
}
工作中 这种方式可行,但我想使用 try 和 catch 块 我的源代码(我想测试这个方法)
public void isCreateCheckingAccount(String amount) {
Double balance = Double.parseDouble(amount);
if(balance < 0)
throw new Exception();
}
这是我在 JUnit 中的测试方法
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public void testCreateAccountInvalidAmount() {
expectedException.expect(Exception.class);
accountServices.isCreateAccount("-100");
}
【问题讨论】:
-
你是说期望测试抛出异常。你的测试方法会抛出异常吗?
-
看起来周围的 try catch 块正在捕获异常,阻止抛出任何异常
-
@macedonboy - 我完全同意你的看法。我对 Junit 没有足够的经验。在我的 isCreateAccount 方法中,我创建异常并捕获它,因为我的测试方法没有得到它。我不确定如何使用 try and catch 来解决这个问题。也许没有解决办法。
-
如果您坚持这样做,您总是可以重新抛出异常,但您也可以更改 if 语句以打印消息,然后抛出异常
-
@Savior - 不,假设您在 mainDriver 中创建了一个方法。此方法引发异常。我想在我的测试方法中使用 Junit 测试这个期望。
标签: java junit try-catch throw