2

別の場所で述べたように、maven (バージョン 3.0.1) はプロジェクト外の CLASSPATH をサポートしていません。したがって、jUnitTest が外部アプリケーション (OpenOffice など) を起動したい場合、コマンド '$> mvn test' を起動すると失敗します。Eclipse では、「実行構成」に CLASSPATH を手動で追加すると、正常に動作します。

私の質問: Eclipse を使用していることを確認するコードを jUnitTest ソース内に追加できますか? これは、コマンドラインでのテストをスキップするだけです。他のテストは引き続きコマンド ラインで実行されます。

4

3 に答える 3

3

Maven プロファイルを使用して、さまざまなプロパティを有効にしたり、さまざまなコマンドを実行したり、必要に応じてクラスパスを修正したり、一部のテストを除外したりすることもできます。たとえば、Eclipse でのみ使用される特定のプロファイルを作成できます。

于 2013-01-21T14:07:58.957 に答える
3

使用したいクラスがロードされているかどうかを検証するクラスを作成します (クラスローダーの仕組みにより、別のクラスにする必要があります。次のようになります)。

public class OODetector {
  public static boolean isOOOnClassPath() {
    try {
      OODetector.class.getClassLoader().loadClass("org.... class name here ...");
      return true;
    } catch (Throwable t) {
      return false;
    }
  } 
}

クラスパス上のクラスを必要とするテストの開始時に、置くだけでAssume.assumeThat(OODetector.isOOOnClassPath(), is(true));テストはスキップされます。

public class OOTests {
  @Test
  public void smokes() throws Exception {
    Assume.assumeThat(OODetector.isOOOnClassPath(), is(true));
    // rest of test
  }
}

またはさらに良いことに、 @BeforeClass に入れます。

public class OOTests {
  @BeforeClass
  public static void smokes() throws Exception {
    Assume.assumeThat(OODetector.isOOOnClassPath(), is(true));
  }

  // tests
}

オブジェクト指向がクラスパスにない場合、クラス内のすべてのテストをスキップし、失敗した数には影響しませんが、合計テスト数を有効に保ち、Maven 起動テストへのランタイム依存関係を取得する正しい方法を見つけた場合クラスパス、テストは魔法のように実行を開始します

于 2013-01-21T15:09:48.580 に答える
0

コード内で値をテストできるランタイムまたは VM フラグを追加するだけです。

于 2013-01-21T13:45:29.700 に答える