27

テストスイート、つまりクラス拡張内のすべてのテストを無効にする方法はFunSpec

私が見つけた唯一の解決策は、各テストの前で置き換えるitことignoreですが、数十のテストでそれを行うのは退屈です。

4

6 に答える 6

39

1.8 でこれを行う簡単な方法は、仮引数をとるコンストラクターを追加することです。ScalaTest (および sbt) は、引数のない public コンストラクターがない場合、クラスを検出しません。

class MySuite(ignore: String) extends FunSuite { 
  // ...
}

2.0 では、クラスに @Ignore を書くだけで済みます。

@Ignore
class MySuite extends FunSuite {
  // ...
}
于 2012-07-18T03:04:13.843 に答える
7

個別のテストとスーツ全体の両方に@Ignoreを使用できます。

于 2015-07-03T17:12:57.653 に答える
2

問題のあるテストにタグを付けてから、タグに基づいてテストを除外または含めます。

タグ付けは 1 回限りの作業です。

于 2012-07-17T05:53:22.887 に答える
2

タグは 1 つのオプションですが、それに応じて各テストにタグを付ける必要があります。そのように完全なスーツを除外することはできません。ただし、user272735 が述べたように、テストのタグ付けは 1 回限りの作業です。

もう 1 つのオプションは、マスター スイートを定義し、nestedSuites実行したいスイートにリストを制限することです (ドキュメントを参照してください)。明らかな欠点は、マスター テスト スイートを維持する必要があることです。つまり、新しく作成したテスト スイートをマスター テスト スイートに追加する必要があります。これを回避するには、フォルダーを再帰的に検索し、見つかったすべてのテスト スーツのリストを作成し、それらをブラック リストに追加します。さらに、フォルダーを再帰的に使用すると、(外部的に) 指定された基準に一致するファイルを除外する機会が既に与えられています。

3 番目のオプション (よりハックですが) は、ブラック リストに登録するスイートが属するパッケージを変更することです。その後、テスト ランナーを使用して、特定のパッケージに含まれるスーツのみを実行できます。詳しくは、ドキュメントの「'members-only' および 'wildcard' Suite パスの指定」セクションを参照してください。

于 2012-07-17T06:02:06.610 に答える