【问题标题】:.sbt redefining test task.sbt 重新定义测试任务
【发布时间】:2014-05-23 21:48:26
【问题描述】:

出于我的特定原因,我想覆盖 test 任务以运行并非所有测试,而是像 test-only TopTestSuiteName param1 param2 一样运行。有可能吗?

我尝试浏览有关任务和示例的文档,但仍远未了解什么是可能的,什么是不可能的。

或者我可以创建自定义任务并以某种方式使用现有的test-only 功能?我觉得这是合理的,但完全无法理解 - 我从哪里开始。

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    我建议你不要管test,而是添加一个自定义的东西。

    别名怎么样?您可以将其添加到您的 .sbt 定义中:

    addCommandAlias("myTest", "testOnly TopTestSuiteName -- param1 param2")
    

    但是,如果您确实需要 myTest 成为一个任务(例如,如果您希望另一个任务依赖它),那么这里的代码(在 sbt 0.13 的 .sbt 格式中)用于在自定义任务:

    val myTest = taskKey[Unit]("call testOnly with some special args")
    
    myTest in Test :=
      (testOnly in Test).toTask(" TopTestSuiteName -- param1 param2").value
    

    【讨论】:

    • 我在回答中省略了param1 param2,因为我不知道您的意图是什么。您想将这些参数传递给谁或什么,究竟是……?
    • test-only 中,这些是“命令行”测试参数(我使用 ScalaTests 的 ConfigMap 将数据库访问凭据传递给 TestSuites)
    • 我已经编辑了我的答案,假设你的意思是testOnly Foo -- param1 param2testOnly 使用 -- 将类名与传递给测试框架的参数分开。
    • 谢谢,它成功了。未来思考的几点注意事项:addCommandAlias 创建顶级别名(我有多项目,这是不希望的)。 toTask 需要 sbt >= 0.13.1
    猜你喜欢
    • 2016-08-13
    • 2017-08-12
    • 2017-06-16
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2020-06-11
    • 2012-01-23
    相关资源
    最近更新 更多