【发布时间】:2017-11-17 04:12:55
【问题描述】:
考虑以下org.scalatest.TagAnnotation 子类:
public class TestSizeTags {
/** Tests with crazy long runtimes **/
@org.scalatest.TagAnnotation
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public static @interface HugeTestClass {}
}
让我们annotate/tag上课吧:
@HugeTestClass
class ItemsJobTest extends FunSuite with BeforeAndAfterEach with DataFrameSuiteBase {
现在我们想要在代码库上快速“冒烟测试套件”;因此,让我们(尝试)排除HugeTestClass注释的测试用例:
命令行:
sbt test * -- -l HugeTestClass
或者也许:
sbt 'testOnly * -- -l HugeTestClass'
让我们也尝试在 sbt 本身中:
sbt> testOnly * -- -l HugeTestClass
在上述所有种情况下,我们(不幸地)仍然看到:
[info] ItemsJobTest:
^C[info] - Run Items Pipeline *** FAILED *** (2 seconds, 796 milliseconds)
所以测试实际上确实运行了..与意图相反。
那么通过sbt 将Tag Filter(/Exclusion) 应用于scalatest 类的正确语法/方法是什么?
【问题讨论】:
-
我使用了 scala
Tag来包含或排除,例如。object HugeTestClassTag extends org.scalatest.Tag("DatabaseTest")然后将HugeTestClassTag添加到我的测试方法中。顺便说一句,HugeTestClass应该是你的静态类吗? -
@prayagupd 是的,它是静态的:更新了 OP 以显示它是一个内部类
-
尝试将 testOnly 部分放在双引号中,同时将完整的包提供给 Tag 以忽略。
-
@prayagupd 相同的行为。
-
该死的。我在回答中发布了一个工作示例。那里也一样?它为我工作。缺少的两件事是 1)
""和 2) 在执行时将完整的包打包到HugeTestClass。