【问题标题】:sbt testOnly not workingsbt testOnly 不工作
【发布时间】:2018-11-15 00:46:48
【问题描述】:

我试图在 Java Play 项目中运行单个测试类,但失败得很惨。

如果我尝试运行

testOnly my.app.TheClassTest

从 sbt 内部(如 JavaTest 和 sbt test 中所述)我得到这个结果:

[信息] 通过:总计 0,失败 0,错误 0,通过 0

[info] 没有要为 test:testOnly 运行的测试

我唯一的怀疑是消息“No tests to run for test:testOnly”不包含我尝试测试的类的名称。

如果我尝试从命令行运行它

sbt testOnly "my.app.TheClassTest"

它运行所有测试,然后我收到以下错误:

[错误] 预期的 ID 字符

[错误] 不是有效命令:net(类似:set、new、inspect)

[错误] 预期的项目 ID

[错误] 预期配置

[错误] 应为“:”(如果选择配置)

[错误] 预期的键

[错误] 不是有效的密钥:我的(类似:测试、名称、资产)

[错误] my.app.TheClassTest

我尝试了各种变体,例如 testOnly TheClassTest、test-only my.app.TheClassTest、test:testOnly 等. 结果只有很小的变化。在 sbt 中使用 testOnly 我可以写任何我想写的东西,并且仍然总是得到相同的响应。

运行所有测试工作正常。

至少有办法获得更多

【问题讨论】:

    标签: unit-testing playframework sbt


    【解决方案1】:

    从 sbt 你可以尝试获取命令的自动补全:

    sbt:my-project> testOnly <tab>
    

    当从命令行运行时(所以在 sbt 提示符之外),例如在持续集成或其他脚本等中,然后你将命令放在引号中包括 > 参数,像这样:

    sbt "testOnly my.package.TheClassTest"
    

    否则 testOnly 似乎没有收到参数。

    【讨论】:

    • 这让我很着迷。每一个。单身的。时间。谢谢提醒!
    【解决方案2】:

    从 sbt 你可以尝试获取命令的自动补全:

    sbt:my-project> testOnly <tab>
    

    它应该显示可用的测试类列表。这可能不适用于最旧版本的 sbt。

    如果您没有看到任何类,请在编译测试类之前尝试运行test:compile。

    【讨论】:

    • 原来我误解了 my.app 部分。应该只是 v1.xxx。我对 Play/sbt 还很陌生,不知道有自动完成功能。谢谢。
    • 如果你是从控制台运行而不是从 sbt 内部运行,那么不要忘记将参数作为一个整体放入 "..",例如$ sbt "testOnly myPackage.myTestClass",或者如果你想继续监控,那么:$ sbt "~testOnly myPackage.myTestClass"
    【解决方案3】:

    对于 sbt 1.5.2,这可行:

    sbt "project dbm; testOnly my.package.TestClass"

    【讨论】:

      猜你喜欢
      • 2018-09-18
      • 2018-02-12
      • 1970-01-01
      • 2017-11-17
      • 2020-03-19
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2015-09-11
      相关资源
      最近更新 更多