6

Martin Odersky Coursera クラスを受講しており、課題では ScalaTest を使用しています。Eclipse が JUnit ランナーでダブルクリックまたは「ファイルへ移動」を右クリックしてもテスト メソッドを見つけられないのは非常に厄介です。

ダブルクリックすると、「メソッド ' xxx ' が見つかりません。テスト クラスを開いています。」ダイアログがポップアップします。

構成に問題がありますか、それとも ScalaTest のバグ/制限ですか?

クラスのサンプル ScalaTest を次に示します。

package recfun

import org.scalatest.FunSuite

import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner

@RunWith(classOf[JUnitRunner])
class CountChangeSuite extends FunSuite {
  import Main.countChange
  test("manual") {
    assert(countChange(4,List(1,2)) === 3)
  }
}
4

3 に答える 3

3

ScalaTest 1.8 で ScalaTest Eclipse プラグインを使用できます。ただし、テストを実行すると、GUI がポップアップ表示されます。便利ですが、ScalaTest 2.0 統合ほど良くはありません。Coursera コースでは 1.8 を使用していると思います。

JUnit で発生している実際の問題は、ScalaTest で解決しようとしたものです。JUnit はテスト フレームワークであるだけでなく、@RunWith アノテーションを介して他のフレームワークを実行できるテスト プラットフォームでもあります。この場合、JUnit を介して ScalaTest を実行しています。ただし、@RunWith アノテーションを使用して IDE を完全にサポートすることはできません。実行できるようになるだけです。これは確かに JUnit の制限です。あなたが望むのは、JUnit (この場合は ScalaTest) を介して実行しているテスト フレームワークの IDE サポートも取得することです。JUnit でこれを行う唯一の方法は、テスト フレームワーク用の IDE プラグインを作成することですが、これは大変な作業です。

私たちは ScalaTest プロジェクトの一環として、プラグインを作成するか、ScalaTest ユーザーに完全な IDE サポートを提供するプラグインの作成を支援してきました。しかし、その取り組みの一環として、他のテスト フレームワークが ScalaTest を介して実行されるときに完全な IDE サポートを提供するために使用できる "Finder" の概念も思いつきました。(つまり、JUnit を介して他のテスト フレームワークを実行できるように、ScalaTest を介して他のテスト フレームワークを実行することもできます。) このビデオの最後 (ビデオの約 10 分) で、IDE サポートを提供する Finder の例をいくつか見ることができます。

http://skillsmatter.com/podcast/scala/scalatest-scalamock-subcut

于 2012-09-23T08:17:30.777 に答える
3

はい、これは Eclipse 用の JUnit プラグインの既知のバグです。また、解決するのも非常に困難です (jun it プラグインの場合)。

基本的に、Eclipse junit プラグインは、すべての Java JUnit テストに存在するメソッドがあることを期待していますが、これは必ずしも ScalaTest テスト、特にスイートと仕様の場合には当てはまりません。

ただし、動作するはずの Eclipse 用 Scaltest プラグインを試すことができます。

于 2012-09-21T15:05:43.090 に答える