【问题标题】:How can I run tests against jar built by sbt-assembly如何对 sbt-assembly 构建的 jar 运行测试
【发布时间】:2014-12-13 01:42:12
【问题描述】:

我正在运行 sbt-assembly 以构建一个可以部署到其他地方的 jar 文件。我想针对这个 jar 文件而不是针对本地 .class 文件运行我的测试。默认使用sbt test 运行本地 .class 文件,但我想测试 jar(但不将测试类文件合并到 jar 中)。

【问题讨论】:

标签: scala sbt sbt-assembly


【解决方案1】:

要在测试中构建程序集 jar,您需要配置

import AssemblyKeys._

Project.inConfig(Test)(baseAssemblySettings)

jarName in (Test, assembly) := s"${name.value}-test-${version.value}.jar"

所以现在您可以使用 test:assembly 准备 uber-jar。但是我不知道用这个 jar 从 sbt 运行测试的简单方法。我会使用自定义命令,例如 test:run-test-assembly 会在内部执行类似的操作

scala -classpath uber-jar-test.jar classpath scalatest-<version>.jar org.scalatest.tools.Runner -p compiled_tests

sbt-assembly 在组装阶段正在运行测试,但我很确定它会再次对尚未打包的类进行测试。 Sou 您可能希望将它们从组装阶段排除

test in (Test, assembly) := {}

【讨论】:

  • 谢谢,但在命令行中包含 scalatest 似乎没有必要(大概在计算依赖项时会自动包含它)。更严重的是,当我运行 scala -classpath uber-jar-test.jar -classpath org.scalatest.tools.Runner -R target/scala-2.10/test-classes/ 时,最大规模的 GUI 会弹出并正确找到我的 25 个测试,但会失败并显示 java.lang.NoClassDefFoundError(当 jar 已组装时,所有类都应该在那里,对吧?)跨度>
  • 拒绝投票,因为这不能回答针对程序集 jar 运行测试的问题;它回答了如何构建一个包含测试的程序集 jar。
  • 这没有回答如何针对 jar 运行测试的问题
猜你喜欢
  • 1970-01-01
  • 2016-01-18
  • 2015-10-04
  • 2013-12-27
  • 2018-01-06
  • 1970-01-01
  • 2023-03-20
  • 2014-04-24
  • 2021-08-15
相关资源
最近更新 更多