Intellij idea 从单个SPEC2父规范运行SPEC2规范列表

Intellij idea 从单个SPEC2父规范运行SPEC2规范列表,intellij-idea,specs2,Intellij Idea,Specs2,我目前正在从事基于maven的scala项目,进行一系列specs2规范测试,并在specs2版本4.9.4中使用Intellij 2020.2和scala 2.12.10 我能够毫无问题地运行每个规范,但在使用IntelliJ按顺序运行所有测试时遇到了问题,之前和之后都没有按照预期工作(但单独运行时确实工作) 我在考虑创建一个父规范,它创建一个所有子规范的列表,然后执行它们——希望这样我能有更多的控制权 我的“儿童”规范使用可变规范,大致如下: class BookmarkSpecs2(imp

我目前正在从事基于maven的scala项目,进行一系列specs2规范测试,并在specs2版本4.9.4中使用Intellij 2020.2和scala 2.12.10

我能够毫无问题地运行每个规范,但在使用IntelliJ按顺序运行所有测试时遇到了问题,之前和之后都没有按照预期工作(但单独运行时确实工作)

我在考虑创建一个父规范,它创建一个所有子规范的列表,然后执行它们——希望这样我能有更多的控制权

我的“儿童”规范使用可变规范,大致如下:

class BookmarkSpecs2(implicit ec: ExecutionEnv) extends Specification
    with BeforeAfterAll
    with Matchers
    with FutureMatchers
    with EmbedMongod {

    val prefix = "mongodb"
    val database = "bcTest"
    val domain = "localhost"
    val port = 12340

sequential

    "Update items" should {
        "adding" in {
...
        }
    }
注意包含类的变量
(隐式ec:ExecutionEnv)

对于我的父规范,我一直在尝试:

import org.specs2.Specification
import org.specs2.concurrent.ExecutionEnv
import org.specs2.specification.core.SpecStructure

class AllTestsSpecs2(implicit ec: ExecutionEnv) extends Specification {

  def is: SpecStructure =  sequential ^ s2"""
    ${"bookmark"  ~ bm}
  """
  def bm = new BookmarkSpecs2()
}
通过IntelliJ执行规范时,它显示:

Testing started at 10:36 AM ...
/opt/jdk/jdk8u265-b01/bin/java -javaagent:/home/colinbester/Projects/idea-IC-202.6397.94/lib/idea_rt.jar=46535:/home/colinbester/Projects/idea-IC-202.6397.94/bin -Dfile.encoding=UTF-8 -classpath ... org.jetbrains.plugins.scala.testingSupport.specs2.Specs2Runner -s com.besterdesigns.bc.rest.AllTestsSpecs2 -showProgressMessages true


Process finished with exit code 0
没有实际运行任何子测试


我很确定我在这里遗漏了一些东西,希望能朝正确的方向推进。

可以通过传递
all
参数来执行链接的规范(可用参数列表可用)


在IntelliJ specs2中,属性需要指定为Java系统属性,因此您需要在IntelliJ运行配置中指定
-Dspecs2.all

是否可以尝试将
all
作为参数传递?在Intellij中,需要将
-Dspecs2.all
指定为Java参数
all
将执行父规范中的所有链接规范。你是一个明星,我正在努力解决我的问题。太好了,我把它变成了一个正确的答案