【问题标题】:Programmatically adding new tests via ScalaTest通过 ScalaTest 以编程方式添加新测试
【发布时间】:2017-04-26 12:42:35
【问题描述】:

我有一组输入用例存储在一个文件中。

我希望每个案例都是一个特定的 scalatest“测试”,即在控制台中报告为单独的测试并单独失败。

很遗憾,实验和 Google 表明此功能可能不存在?

例如,这似乎是常见的情况(为简单起见省略)

class MyTestingGoop extends FunSuite {
   val input : Seq[SpecificTestCase] = ...
   test("input data test") {
      forAll(input) { case => ... } 
   }
   //...
}

理想情况下,每个case 都作为一个单独的测试呈现。 ScalaTest 如何做到这一点?

【问题讨论】:

  • 我宁愿添加标签(比如PerfTests)来标记测试,并使用该特定标签运行测试。例如。 mvn -DtagsToInclude=PerfTest test
  • @prayagupd :这并没有解决生成和运行程序化测试的具体问题。
  • 哦哦是说您的输入是动态的,可能是 10 个不同的输入,您想为每个输入进行 10 个测试?这就是你所说的程序化?,如果是,那是可行的。

标签: scala scalatest


【解决方案1】:

你可以这样做:

class MyTestingGoop extends FunSuite {
  val input : Seq[SpecificTestCase] = ...

  forAll(input) {
    test("testing input" + input) {
       // do something with the test
    }
  }
}

唯一的限制是输入具有唯一的 toString。

基本上在 Funsuite 中调用 test 会注册测试并稍后运行它,只要您的测试创建是作为类构造的一部分完成并且每个测试都有一个唯一的字符串,您应该没问题。

【讨论】:

  • 如果“输入”由 run 方法定义,您知道如何使用这种技术吗?在我测试注册时的用例中,变量只是一个空列表,因此测试不会运行
猜你喜欢
  • 2012-10-15
  • 2015-12-04
  • 2011-05-04
  • 1970-01-01
  • 2020-02-14
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
相关资源
最近更新 更多