版本:
<properties>
<junit.jupiter.version>5.2.0</junit.jupiter.version>
<junit.platform.version>1.2.0</junit.platform.version>
</properties>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
val closureContainingCodeToTest = () -> myClass.myMethod(data) // or val closureContainingCodeToTest = () => myClass.myMethod(data)
assertThrows(classOf[MyException], closureContainingCodeToTest)
Error:(89, 48) type mismatch;
found : () => Unit
required: org.junit.jupiter.api.function.Executable
assertThrows(classOf[MyException], closureContainingCodeToTest)
package com.my.lib
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.function.Executable
class myTest {
@Test
def myTest = {
val closureContainingCodeToTest:Executable = () => throw new RuntimeException()
assertThrows(classOf[RuntimeException], closureContainingCodeToTest)
}
}
我得到以下错误:
Error:(11, 53) type mismatch;
found : () => Nothing
required: org.junit.jupiter.api.function.Executable
val closureContainingCodeToTest:Executable = () => throw new RuntimeException()
如果我们想用JUnit5风格来完成,您可以使用下面的代码来完成:
import org.junit.jupiter.api.{DisplayName, Test}
import org.junit.runner.RunWith
import org.scalatest.junit.{JUnitRunner, JUnitSuite}
@RunWith(classOf[JUnitRunner])
class Junit_5_Test extends JUnitSuite{
object ExceptionTest {
@throws(classOf[RuntimeException])
def throwRunEx = throw new RuntimeException
}
@Test
@DisplayName("Example with JUnitSuite")
def throwsExceptionWhenCalled_With_JUnitSuite() {
import ExceptionTest._
assertThrows[RuntimeException]{ throwRunEx}
}
}
要这样做-u需要在构建中包含此内容。sbt
:
"org.junit.jupiter" % "junit-jupiter-api" % "5.2.0" % Test,
"org.scalatest" %% "scalatest" % "3.2.0-SNAP10" % Test
在JUnit5中有更好的方法来断言方法抛出异常吗? 目前,我必须使用@规则来验证我的测试是否抛出了异常,但这对于我期望多个方法在我的测试中抛出异常的情况不起作用。
我在junit测试中使用mockito。如何使异常发生,然后断言它有(泛型伪代码)
我有一个类,它有一个方法。我正在做相应的测试,但是我还不能验证是否抛出了定制的异常,我使用的是JUnit5。 我已经复习了这里,但答案并没有帮助我,这是我根据一个示例编写的代码:
问题内容: 如何惯用JUnit4来测试某些代码引发异常? 虽然我当然可以做这样的事情: 我记得在这种情况下,有一个批注或一个Assert.xyz或一些不太灵活的JUnit东西。 问题答案: JUnit 4 有对此的支持:
在使用JUnit5的Kotlin中,我们可以使用assertFailsWith 在JUnit5的Java中,可以使用assertThrows 但是,我们如何用将声明和Kotlin中的执行分开呢?
我需要从java调用scala代码,因此需要告诉编译器某个方法抛出某些异常。对于一个异常很容易做到这一点,但是我很难声明一个方法抛出多个异常。 这不起作用: