我希望能够使用我们已经内部开发的JUnit规则,例如TemporaryFolder
或其他TestRule
。
最好的方法是什么?我知道JUnitSuite,但它似乎没有使用@Rule
注释。
无论如何,我还是想使用另一个ScalaTest套件。
所以我的问题是:
ScalaTest套件是否支持JUnit规则?
如果没有,那里是否有可以使用Junit TestRule
的库?
如果没有,如何在Scala测试中使用JUnit TestRule
?
还是有一种更合适的Scala专用方法来完成TemporaryFolder
的内容,或者例如Stefan Birkner的System Rules提供的内容?
这是我尝试使用JUnitSuite
的方法:
class MyTest extends JUnitSuite {
//@Rule
//val temporaryFolder = new TemporaryFolder() // throws java.lang.Exception: The @Rule 'temporaryFolder' must be public.
@Rule
def temporaryFolder = new TemporaryFolder()
@Test
def test: Unit = {
assert(temporaryFolder.newFile() !== null) // java.lang.IllegalStateException: the temporary folder has not yet been created
}
}
最佳答案
您可以通过创建类型为TemporaryFolder
的成员字段并通过@Rule
函数返回此字段值来解决该问题。
class MyTest extends JUnitSuite {
val _temporaryFolder = new TemporaryFolder
@Rule
def temporaryFolder = _temporaryFolder
@Test
def test: Unit = {
assert(temporaryFolder.newFile() !== null)
}
}