Intellij内でscala flatspec testを実行しようとしていますIDEA(最新のコミュニティビルド、最新のScalaプラグイン) 、しかし「空のテストスイート」エラーが発生し続けます。
右クリックで通常の「実行」メニューを使用してみましたが、機能しません。また、新しいScalaTest構成を作成しようとしましたが、それでもランナーはテストを取得していません。
JScalaTestをunitで使用できましたが、flatspec構文を使用したいと思います。
[〜#〜] update [〜#〜]:クラスに@RunWith(classOf[JUnitRunner])
アノテーションを付けることも役に立ちません
ありがとう!
class SampleTestSpec extends FlatSpec with ShouldMatchers {
"test" should "fail" in {
"this" should equal ("that")
}
}
更新:ScalaTestからSpecに切り替えると、問題が解決しました。私はまだFlatSpecでScalaTestを好みますが、これで十分です。動作するコード:
import org.specs._
object SampleTestSpec extends Specification {
"'hello world' has 11 characters" in {
"hello world".size must be equalTo(113)
}
"'hello world' matches 'h.* w.*'" in {
"hello world" must be matching("h.* w.*")
}
}
-テオ
私はそれをこのように実行してきました(ただし、少し冗長であり、おそらく削減できるでしょう):
@RunWith(classOf[JUnitSuiteRunner])
class AuthorisationParserRunAsTest extends JUnit4(AuthorisationParserSpec)
object AuthorisationParserSpec extends Specification {
...
}
IntelliJがテストを自動的に取得しない場合は、次の操作を実行できます。
実行構成で、ScalaTest実行構成を作成し、その「テストの種類」を「すべてのパッケージ」に設定し、「テストパッケージ」をテストを含むパッケージに設定します。
これは私のために働いた:構成の編集->テストの種類:すべてパッケージ内
ScalaTestには 概要 すべての可能性があります。すべてのテストクラスに注釈を付けました
@RunWith(classOf[JUnitRunner])
ファイルの最後でTest
にして、テスト構成でRun on Sbt
をクリックする必要があります。
それが誰かを助ける場合に備えて-私はこれをScalaに新鮮に当てました、そしてそれは私が私のテストクラスを構築した方法のためでした。私は持っていました
class SomeTests extends FlatSpec {
def aTest = {
"This thing when that thing happens" should
"return some particular response" in {
// ... test body
}
}
}
問題は、テストをメソッドでラップしたことでしたが、このコンテキストではテストをむき出しにする必要があることに気づいていませんでした。
class SomeTests extends FlatSpec {
"This thing when that thing happens" should
"return some particular response" in {
// ... test body
}
}
「空のテストスイート」に出くわしました。 FlatSpecで個々のテストを実行しているときにも問題が発生します。動作文字列の先頭にある空白に根本原因を絞り込みました。
例次のコードでは、最初のテストは実行されますが、2番目のテストは実行されません(個別に実行する場合)。これは、動作文字列「notrun」の先頭に空白が存在するためです。取り外して再度実行すると、機能するはずです。
import org.scalatest.FlatSpec
class FlatSpecWhiteSpaceTest extends FlatSpec {
"TestWithNoEmptySpace" should "run" in {
runTest
}
"TestWithEmptySpace" should " not run" in {
runTest
}
def runTest(): Unit = {
val expectedValue = true
val actualValue = true
assert(expectedValue === actualValue)
}
}
少し遅すぎますが、同じ問題が発生しました("Empty test suite")IDEAバグトラッカー、解決策を見つけました私の場合:
私のscala
バージョンは2.9.0-1
およびscala-test
バージョン2.8.*
。
アップグレード後に動作を開始しましたscala-test
最新バージョン(scalaと同じ)。
AFAIK、 JUnitRunner
はまさにこれです。
IntelliJでFunSuiteテストを問題なく実行できました。ただし、FlatSpecテストで作業しているときに私が見つけたのは、Ctrl + Shift + F10を使用して(つまり、すべてのテストを実行して)正しく実行するには、実際のテストクラス定義を右クリックするかカーソルを置く必要があるということです。定義されたすべてのテストを実行し、イライラする「空のテストスイート」エラーを回避します。