gpt4 book ai didi

scala - 在 ScalaTest 中使用 JUnit @Rule(例如 TemporaryFolder)

转载 作者:行者123 更新时间:2023-12-04 02:40:34 26 4
gpt4 key购买 nike

我希望能够使用 JUnit 规则,例如 TemporaryFolder或其他 TestRule s 我们已经在内部开发。
实现这一目标的最佳方法是什么?我知道 JUnitSuite,但它似乎没有找到 @Rule注解。
无论如何,我想使用不同的 ScalaTest 套件。

所以我的问题是:

  • ScalaTest 套装是否支持 JUnit 规则?
  • 如果没有,是否有可以使用 Junit TestRule 的库?可能吗?
  • 如果没有,如何使用 JUnit TestRule s 在 Scala 测试中?
  • 或者是否有更合适的特定于 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)
    }
    }

    关于scala - 在 ScalaTest 中使用 JUnit @Rule(例如 TemporaryFolder),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32160549/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com