首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Eclipse测试方法会抛出异常(在CodePro中)?

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

Stack Overflow用户
提问于 2011-11-16 07:42:34
回答 3查看 610关注 0票数 0

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

例如:

代码语言:javascript
复制
@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()不会抛出任何检查过的异常。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-16 14:01:37

在上面的例子中,你可以毫不费力地移除抛出异常。然而,如果你有一个检查过的异常,如果你只是添加了抛出异常,代码就会变得更容易管理。看看另一种选择:

代码语言:javascript
复制
@Test public static void testIt() {
    try {
        foobar(); // throws an IOException
    } catch (Exception e) {
        fail("caught an exception " + e.getMessage());
    }
}

与此相对的是:

代码语言:javascript
复制
@Test public static void testIt() throws IOException {
    foobar();
}

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

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

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

很好的实践?相当可接受的做法。它使得测试的维护变得容易得多,代码也更加清晰。

票数 2
EN

Stack Overflow用户

发布于 2011-11-16 08:54:35

这绝对不是一个限制。当您编写单元测试时,您实际上并不关心抛出哪种类型的异常。在expected exceptions之外,任何异常都会显示一个红色条,告诉您有什么不正常。因此,有一个“全部捕获”throws Exception子句就足够了。

票数 1
EN

Stack Overflow用户

发布于 2011-11-16 07:51:32

您不必抛出异常,我可以想象该工具可以执行静态分析,以确定是否可能抛出已检查异常。然而,当我手工编写单元测试时,我通常会添加throw子句,因为我总是会添加一行抛出检查异常的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8144743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档