【问题标题】:Cannot run tests via sbt in Scala无法在 Scala 中通过 sbt 运行测试
【发布时间】:2014-11-11 13:36:36
【问题描述】:

我正在尝试一个简单的 HelloWorld 示例。这是我的目录结构:

hello
  build.sbt
  main
    scala
      Hello.scala
  test
    scala
      HelloTest.scala

Hello.scala 包含一个sayHello 函数,我试图从HelloTest.scala 中的一个简单测试中调用该函数。这是我的 build.sbt:

name := "Hello"

organization := "tycon"

scalaVersion := "2.11.2"

libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.1" % "test"

这是一个不运行任何测试的 sbt 运行:

$ sbt
[info] Set current project to scala (in build
file:~/git/scala/hello/main/scala/)
> compile
[info] Updating
{file:~/git/scala/hello/main/scala/}scala...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to
~/git/scala/hello/main/scala/target/scala-2.10/classes...
[success] Total time: 3 s, completed Sep 17, 2014 9:04:00 AM
> test
[info] Passed: Total 0, Failed 0, Errors 0, Passed 0
[info] No tests to run for test:test
[success] Total time: 0 s, completed Sep 17, 2014 9:04:03 AM

我尝试了其他答案的建议:将%% 替换为%,并将scalatest_2.10 替换为libraryDependencies 中的scalatest,并将scalaVersion 更改为2.10.0。他们都没有工作。是的,每次build.sbt 改变时,我都是reloading。

我相信我遗漏了一些非常基本的东西。我将不胜感激任何帮助。我是 Scala 的新手。

编辑:为了完整起见,这里是两个 scala 文件:

Hello.scala:

trait Hello {
  def sayHello () = {
    println ("Hello, World!")
  }
}

HelloTest:scala:

import org.scalatest.FunSuite

class HelloTest extends FunSuite with Hello {
  test("say hello") {
    sayHello()
  }
}

Edit2:我按照 ajozwik 和 Gabriele 的建议更改了目录结构,但 sbt 仍然没有运行测试:

~/git/scala/hello/src/main/scala$ sbt
[info] Set current project to scala (in build
file:~/git/scala/hello/src/main/scala/)
> test
[info] Passed: Total 0, Failed 0, Errors 0, Passed 0
[info] No tests to run for test:test
[success] Total time: 1 s, completed Sep 17, 2014 9:36:24 AM

【问题讨论】:

  • src/main/scala src/test/scala ??

标签: scala sbt


【解决方案1】:

目录结构应该是

hello
  build.sbt
  src
    main
      scala
        Hello.scala
    test
      scala
        HelloTest.scala

即您缺少外部 src 目录。

此外,您需要从项目的根目录运行sbt,而不是从子文件夹中运行。

【讨论】:

  • @GowthamKaki 你重新编译了吗?
  • @GowthamKaki 看到我的编辑。您必须从根文件夹运行 sbt。
  • 谢谢,加布里埃尔。从根文件夹运行有帮助。由于 sbt 强制执行目录结构,我假设它知道构建文件的位置。显然不是。
猜你喜欢
  • 2014-03-01
  • 1970-01-01
  • 2023-03-26
  • 2022-01-02
  • 1970-01-01
  • 2015-09-09
  • 2017-09-30
  • 2018-11-27
  • 2015-10-22
相关资源
最近更新 更多