1

我正在将 java jUnit 测试转换为 scala。由于 scala 不使用已检查的异常,因此此 java 代码:

@Test 
public void testException throws Exception = {
    throw new Exception
}

可以在 scala 中重写为:

@Test def testException = {
    throw new Exception
}

用 java 编写的测试将在线 throw new Exception 失败,但用 scala 编写的测试将通过,即使它也抛出一个 Exception

我可以将 scala 测试重写为如下所示的内容,因此如果抛出异常,我会通过调用 junits fail 方法显式强制测试失败:

@Test def testException = {
    try { 

    } catch {
           case e: Exception => {
                 fail("exception thrown "+e.getMessage());
            }
    }
}

我应该这样写测试吗?换句话说,对于任何抛出异常的 java 测试,我是否应该重写测试的 scala 版本以显式捕获然后无法模仿测试的 java 版本的行为方式?

4

1 回答 1

4

不,你绝对不应该。它唯一能做的就是让你的测试更加冗长,并且有更糟糕的堆栈跟踪和断言消息。

用 java 编写的测试将在线 throw new Exception 失败,但用 scala 编写的测试将通过,即使它也抛出一个 Exception

不,任何抛出异常的 JUnit 测试都会失败,不管它是用什么语言编写的。

于 2012-12-10T11:55:24.347 回答