我想为使用 Scala 的 JUnit 4 测试设置一个预期的异常。我目前正在做类似以下的事情:
@Test(expected=classOf[NullPointerException])
def someTest() = {
// Some test code
}
但我收到以下编译器错误:
error: wrong number of arguments for constructor Test: ()org.junit.Test
我想为使用 Scala 的 JUnit 4 测试设置一个预期的异常。我目前正在做类似以下的事情:
@Test(expected=classOf[NullPointerException])
def someTest() = {
// Some test code
}
但我收到以下编译器错误:
error: wrong number of arguments for constructor Test: ()org.junit.Test
scala 处理属性的方式有点古怪。我认为你想要做的应该是这样表达的:
@Test { val expected = classOf[ NullPointerException] }
def someTest {
// test code
}
这对我有用(JUnit 4.10,Scala 2.10.2):
@Test(expected = classOf[NullPointerException])
def testFoo() {
foo(null)
}
类似于Tristan 建议的,但这种语法实际上可以在我的项目中编译和工作。
编辑:呃,仔细看,这正是最初的问题。好吧,我想在答案中也有最新的工作语法并没有什么坏处。
您还可以尝试使用以下规格:
class mySpec extends SpecificationWithJUnit {
"this expects an exception" in {
myCode must throwA[NullPointerException]
}
}
埃里克。
一起使用 ScalaTest 和 JUnit,你可以:
import org.scalatest.junit.JUnitSuite
import org.scalatest.junit.ShouldMatchersForJUnit
import org.junit.Test
class ExampleSuite extends JUnitSuite with ShouldMatchersForJUnit {
@Test def toTest() {
evaluating { "yo".charAt(-1) } should produce [StringIndexOutOfBoundsException]
}
}