代码之家  ›  专栏  ›  技术社区  ›  anuni

手动排除sbt中的某些测试类

  •  6
  • anuni  · 技术社区  · 11 年前

    我通常在CI中执行以下命令:

    清理更新编译测试发布

    但是,我想从sbt命令行中排除1个(或几个)测试类。

    我该怎么做?(我不想更改代码以使用忽略等)

    3 回复  |  直到 5 年前
        2
  •  4
  •   Tomer Shetah Anshul Jain    5 年前

    只需详细说明上面@Gonfva建议的两个正确选项:

    1. 使用 testOnly 您应该运行:

      sbt "testOnly org.fully.qualified.domainn.name.ASpec"
      

      当参数是类的FQDN时。可以使用多个类将它们按空格分隔。这也可以用于glob。例如:

      sbt "testOnly *ASpec"
      
    2. 使用标记。首先,定义标记:

      import org.scalatest.Tag
      object CustomTag extends Tag("tagName")
      

      然后,使用此标记定义测试:

      it should "test1" taggedAs CustomTag in { println("test1") }
      

      现在,为了包括使用此标记的测试,请运行:

      sbt "testOnly * -- -n tagName"
      

      注:*为通配符。它可以是第1节中描述的任何球体。

      为了排除此标记,您需要运行:

      sbt "testOnly * -- -l aaa"
      
        3
  •  0
  •   Richard Gomes    3 年前

    包括或排除测试取决于您使用的测试框架。您将在SBT中使用的命令不是完全由SBT解析的,而是由SBT部分解析的,部分由您使用的测试框架解析的。

    所以,如果你起诉 标量/弹药 ,可以输入如下命令:

    sbt> myproject/Test/testOnly MyProjectTest -- --exclude-tags=tag1,tag2,tag3
    

    如果您正在使用另一个测试框架 -- 可能会有所不同。

    显然,在编写测试用例时,必须在某处添加标记。更多详情如下:

    推荐文章