gpt4 book ai didi

java - 为什么 CodePro junit 测试方法会抛出异常(在 Eclipse 中)?

转载 作者:行者123 更新时间:2023-12-02 00:34:41 30 4
gpt4 key购买 nike

Eclipse 的 CodePro 生成 JUnit 测试,但是,它生成的所有测试方法都会抛出 Exception,即使不可能抛出已检查的异常。这是 CodePro 的限制,还是我以前从未见过的良好 JUnit 实践?

例如:

@Test
public void testCategory_1()
throws Exception {
String categoryName = "";

Category result = new Category(categoryName);

// add additional test code here
assertNotNull(result);
assertEquals(null, result.getCategoryName());
}

其中 new Category(String)result.getCategoryName() 不会抛出任何已检查的异常。

最佳答案

在上面的情况下,您可以毫无问题地删除抛出异常。但是,在确实有受检查异常的情况下,如果只需添加 throws Exception,代码就会变得更易于管理。看看替代方案:

@Test public static void testIt() {
try {
foobar(); // throws an IOException
} catch (Exception e) {
fail("caught an exception " + e.getMessage());
}
}

相对于:

@Test public static void testIt() throws IOException {
foobar();
}

JUnit 处理异常的方式与断言失败完全相同(实际上是作为 AssertionError 实现的),因此如果代码中存在意外异常,则会导致测试失败,这可能正是您想要的。而且你的测试更清晰

如果您有预期的异常,那么您可以在 @Test 注释中将其指定为预期异常,或者使用 TestRule ExpectedException .

当我检查代码中的异常时,我经常使用它。将抛出异常添加到测试方法中比添加所有已检查异常的列表要容易得多。不过,你确实违反了一些检查样式规则:-)

好的做法吗?相当可以接受的做法。它使测试的维护变得更加容易,并且代码也更加清晰。

关于java - 为什么 CodePro junit 测试方法会抛出异常(在 Eclipse 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144743/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com