java - 我是否应该在 java 对应方抛出异常的情况下明确地使 scala 单元测试失败

标签 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 编写的测试将通过,即使它也抛出异常

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

@Test def testException = {
    try { 

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

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

最佳答案

不,你绝对不应该。它所做的唯一一件事就是使您的测试更加冗长,并使堆栈跟踪和断言消息变得更糟。

The test written in java will fail on line throw new Exception but the test written in scala will pass even though it also throws an Exception

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

关于java - 我是否应该在 java 对应方抛出异常的情况下明确地使 scala 单元测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13800358/

相关文章:

c# - Visual Studio 2010 测试未在异常时进入调试器

c# - UnitTest 类中的 IOC - Unity.WebApi

ios - 如何使用 FBTestSession 设置 FBPLISTAppIDKey 和 FBPLISTAppSecretKey

scala - UnsatisfiedLinkError with native library under sbt

java - 尝试在单击 J 按钮时来回更改其颜色

java - ruby 中是否有类似 Java Quartz 的东西?

scala - 将自定义编解码器添加到 CassandraConnector

scala - 如何在 Play 2.2 中使用 ebean 框架和 scala 创建模型实例

java - 能够通过hibernate连接到postgres但是不能通过执行查询获取数据

java - Altbeacon,如何处理找不到信标的情况? if (beacons.size() > 0) { 的 else 语句