我希望能够在测试中使用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
实例。最终,我们采用了可堆叠的 mixins 解决方案,这样我们就不会被 JUnitSuite 锁定。但无论如何,很高兴知道@Rule
可以在 scalatest 中得到支持。 - Mifeet