version:
jdk1.8.0 Scala: 2.11
<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>
I am following this question, which shows how to assert exception using junit 5 in java.
When I am trying to do the same in scala:
val closureContainingCodeToTest = () -> myClass.myMethod(data) // or val closureContainingCodeToTest = () => myClass.myMethod(data)
assertThrows(classOf[MyException], closureContainingCodeToTest)
I get this error:
Error:(89, 48) type mismatch;
found : () => Unit
required: org.junit.jupiter.api.function.Executable
assertThrows(classOf[MyException], closureContainingCodeToTest)
This might be very simple question, but I could not found how to create Scala closure to Java Executable
object in Scala.
Edit:
Adding a simple complete test:
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)
}
}
I get following error:
Error:(11, 53) type mismatch;
found : () => Nothing
required: org.junit.jupiter.api.function.Executable
val closureContainingCodeToTest:Executable = () => throw new RuntimeException()