说我在main / scala中有一个scalatest类,例如
import org.scalatest.FunSuite
class q3 extends FunSuite {
test("6 5 4 3 2 1") {
val digits = Array(6,5,4,3,2,1)
assert(digits.sorted === Array(1,2,3,4,5,6))
}
}
如何使用sbt运行它?
我尝试过sbt test
,sbt testOnly
,sbt "testOnly *q3"
,它们的输出都像
[info] Run completed in 44 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 0
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] No tests were executed.
[info] No tests to run for Test / testOnly
几年前的类似问题说他们成功使用了testOnly
,但我无法使其正常工作。
打开文件时,VSCode上的metal扩展名显示“测试”链接,该链接成功运行了测试,但未显示它是如何执行的。我想知道如何通过sbt做到这一点。
答案 0 :(得分:3)
将ScalaTest放在Compile
的{{1}}类路径上
build.sbt
,然后从libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.0"
内部明确呼叫org.scalatest.run
跑步者,
App
Putting it together我们在object MainTests extends App {
org.scalatest.run(new ExampleSpec)
}
src/main/scala/example/MainTests.scala
并使用package example
import org.scalatest.matchers.should.Matchers
import org.scalatest.flatspec.AnyFlatSpec
import collection.mutable.Stack
import org.scalatest._
class ExampleSpec extends AnyFlatSpec with Matchers {
"A Stack" should "pop values in last-in-first-out order" in {
val stack = new Stack[Int]
stack.push(1)
stack.push(2)
stack.pop() should be (2)
stack.pop() should be (1)
}
}
object MainTests extends App {
org.scalatest.run(new ExampleSpec)
}
运行它。此外,我们可以像这样收集Suites
和execute
中的测试
runMain example.MainTests