2015-11-26 42 views
1

我已經使用簡單的sbt構建了一個簡單的Spec2測試項目。Specs2無法使用sbt找到我的測試

package main.specs 

import org.specs2._ 

class QuickStartSpec extends Specification { 
    def is = s2""" 
    This is my first specification 
    it is working     $ok 
    really working!    $ok 
          """ 
} 

這裏是我的build.sbt文件:

name := "QuickStartSpec" 

version := "1.0" 

scalaVersion := "2.10.1" 

libraryDependencies ++= Seq("org.specs2" %% "specs2-core" % "3.6.5" % "test") 

scalacOptions in Test ++= Seq("-Yrangepos") 

但是當我在SBT運行此命令

testOnly main.specs.QuickStartSpec 

我得到這個:

[info] Updating {file:/Users/nabajeet/workspace/SpecsTest/}specstest... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[info] Passed: Total 0, Failed 0, Errors 0, Passed 0 
[info] No tests to run for test:testOnly 

我正在關注這個頁面來創建示例: https://etorreborre.github.io/specs2/website/SPECS2-3.6.5/quickstart.html

我無法弄清爲什麼我的測試沒有被檢測到。

我SBT版本0.13.8

+0

你能爲你的項目提供目錄和文件佈局嗎?我懷疑測試不在正確的位置。在一個vanilla sbt項目中,'QuickStartSpec.scala'應該在'/ Users/nabajeet/workspace/SpecsTest/src/test/scala/main/specs/QuickStartSpec.scala'中(它可以位於'/ Users/nabajeet/workspace/SpecsTest/src/test/scala /'作爲包名不必在fs結構中表示) – Jean

+0

嘿,目錄是 – Naba

+0

/Users/nabajeet/workspace/SpecsTest/src/main/specs/quickStartSpec.scala – Naba

回答

1

通過聲明

libraryDependencies ++= Seq("org.specs2" %% "specs2-core" % "3.6.5" % "test") 

你限制specs2只類測試源目錄範圍。你將無法引用在生產代碼specs2類(所有的src/main/下的代碼)

在您的評論表示您放置在您的規格在/Users/nabajeet/workspace/SpecsTest/src/main/specs/quickStartSpec.scala

試試你的文件移動到/用戶/ nabajeet /工作區/ SpecsTest/src目錄/ 測試/斯卡拉 /specs/quickStartSpec.scala

不正確的位置就是爲什麼你不規範的SBT拿起(我有信心地說,它沒有任何編譯) 。

默認情況下,SBT適用於maven的standard directory layout,爲scala代碼添加src/main/scala/src/test/scala/。這是在SBT tutorial

記錄我剛剛創建了一個項目具有以下佈局

. 
./built.sbt 
./src 
./src/test 
./src/test/scala 
./src/test/scala/QuickStartSpec.scala 

build.sbt包含

name := "QuickStartSpec" 

version := "1.0" 

scalaVersion := "2.11.4" 

libraryDependencies ++= Seq("org.specs2" %% "specs2-core" % "3.6.5" % "test") 

scalacOptions in Test ++= Seq("-Yrangepos") 

和QuickStartSpec.scala包含

package main.specs 

import org.specs2._ 

class QuickStartSpec extends Specification { 
    def is = s2""" 
    This is my first specification 
    it is working     $ok 
    really working!    $ok 
          """ 
} 

這裏是我得到的sbt輸出

sbt 
[info] Set current project to QuickStartSpec (in build file:/tmp/stack/) 
> test:compile 
[info] Updating {file:/tmp/stack/}stack... 
[info] Resolving jline#jline;2.12 ... 
[info] Done updating. 
[info] Compiling 1 Scala source to /tmp/stack/target/scala-2.11/test-classes... 
[info] 'compiler-interface' not yet compiled for Scala 2.11.4. Compiling... 
[info] Compilation completed in 6.372 s 
[success] Total time: 9 s, completed 27 nov. 2015 06:38:26 
> test 
[info] QuickStartSpec 
[info]  + This is my first specification 
[info]  it is working 
[info]  + really working! 
[info] 
[info] Total for specification QuickStartSpec 
[info] Finished in 17 ms 
[info] 2 examples, 0 failure, 0 error 
[info] 
[info] Passed: Total 2, Failed 0, Errors 0, Passed 2 
[success] Total time: 1 s, completed 27 nov. 2015 06:38:31 
> 
+0

謝謝,@Jean,但現在我得到編譯錯誤!宏擴展期間出現[error]異常: [error] java.lang.UnsupportedOperationException:Position.end on class scala.reflect.internal.util.OffsetPosition [error] \t at scala.reflect.internal.util.Position.end (Position.scala:126) [error] \t at org.specs2.specification.create.S2Macro $$ anonfun $ 2.apply(S2Macro.scala:29)' – Naba

+0

我試着將scala版本更改爲2.11.4來解決這個問題在某些解決方案中提到的問題,但又使規格無法檢測到測試! – Naba

+0

你現在能夠讓你的測試工作嗎? – Jean