我是否应该在java对等方抛出异常的scala单元测试中显式失败

我是否应该在java对等方抛出异常的scala单元测试中显式失败,java,unit-testing,scala,junit,junit4,Java,Unit Testing,Scala,Junit,Junit4,我正在将java jUnit测试转换为scala。由于scala不使用选中的异常,因此此java代码: @Test public void testException throws Exception = { throw new Exception } 可以在scala中重新编写为: @Test def testException = { throw new Exception } 用java编写的测试将在线失败 抛出新异常 但是用scala编写的测试将通过,即使它也会抛出

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

@Test 
public void testException throws Exception = {
    throw new Exception
}
可以在scala中重新编写为:

@Test def testException = {
    throw new Exception
}
用java编写的测试将在线失败 抛出新异常 但是用scala编写的测试将通过,即使它也会抛出一个异常

我可以将scala测试重新写入如下内容,因此如果引发异常,我会通过调用junits fail方法显式强制测试失败:

@Test def testException = {
    try { 

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

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

不,您绝对不应该这样做。它所做的唯一一件事是使测试更加冗长,并且具有更糟糕的堆栈跟踪和断言消息

用java编写的测试将在抛出新异常时失败,但用scala编写的测试将通过,即使它也抛出异常


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

不,你绝对不应该这样做。它所做的唯一一件事是使测试更加冗长,并且具有更糟糕的堆栈跟踪和断言消息

用java编写的测试将在抛出新异常时失败,但用scala编写的测试将通过,即使它也抛出异常


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

出于某种原因,每次更新JUnit测试时,我都需要执行清理/构建。一旦我这样做了,测试就会失败。出于某种原因,每次我更新junit测试时,我都需要执行清理/构建。一旦我这样做了,测试就失败了。