こんにちは私はJava mavenプロジェクトに取り組んでいます。このプロジェクトではpom.xmlファイルでいくつかの変数を定義する必要があります。
Pom.xmlファイルで次のように変数を定義しました。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<includes>
<include>**/*Test*.Java</include>
<include>**/*Tests*.Java</include>
<include>**/Test*.Java</include>
</includes>
<systemPropertyVariables>
<my.value>NOTNULL</my.value>
</systemPropertyVariables>
</configuration>
</plugin>
my.value
変数にアクセスするために、次のJavaコード)を使用しています。
String testdata = System.getProperty("my.value");
System.out.println(testdata);
ただし、変数の値を設定した場合でも、コンソール出力には常にnull
が表示されます。
ここで何が悪いのか誰かが指摘できますか?
前もって感謝します。
編集:私もmaven-failsafe-plugin
の下でsystemPropertyVariables
を宣言しようとしましたが、変更はありません。
[〜#〜] note [〜#〜]:コードのtestdata行を次のように変換しようとすると、
String testdata = System.getProperty("my.value").toString();
上記の行でNullPointerExceptionが発生します。
編集:これを以前の回答として投稿して申し訳ありません。
私はあなたが提供したプラグイン.../pluginコードを使用してJUnitテストとしてそれを実行していますが、これが私のコンソール出力です。
21 Oct 2014 12:36:56,973 main INFO s.MyClass - Default Implicit timeout set in Driver to: 100
21 Oct 2014 12:36:56,973 main INFO s.MyClass - Default URL for server is set to: http://localhost:8080
---- null
URLは私がpom.xmlファイルから取得しようとしているものであり、私が書いた条件はそれです
変数の値が空の場合は$ {で始まり、localhost:8080を返します。それ以外の場合は、URLを返します。
だからあなたが私にここで何か間違ったことを指摘することができれば
Windows
のmaven-3.2.3
とJDK 1.6.0_67
で動作します
maven-archetype-quickstart
..でプロジェクトを作成しました.
関連するpom行を追加しました... surefireの例 を上記の質問の特定の行と組み合わせます。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<systemPropertyVariables>
<my.value>NOTNULL</my.value>
<buildDirectory>${project.build.directory}</buildDirectory>
</systemPropertyVariables>
</configuration>
</plugin>
AppTest.Javaの関連行
/**
* Rigourous Test :-)
*/
public void testApp()
{
System.out.println(System.getProperty("my.value"));
System.out.println(System.getProperty("buildDirectory"));
assertTrue( true );
}
mvn test
からの関連出力
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.mycompany.app.AppTest
NOTNULL
C:\Users\raghu\Documents\GitHub\mvn-examples\test-properties\target
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in c
om.mycompany.app.AppTest
ここ はgithubのプロジェクトです。
ここで、Eclipseの 既知の制限 IDE(質問はEclipse
でタグ付けされています)に遭遇しました。
Eclipseの外部のmvn test
コマンドはEclipseIDEの「Maventest」実行構成と同様に機能しますが、「JUnitTest」実行構成はEclipseの完全に異なる部分ですIDE =テストコードを実行します。また、JUnit Eclipse統合(少なくとも私が実行しているJUnitバージョン4まで)には、M2Eclipseプラグイン(Eclipse内にMaven機能をもたらすプラグイン)との統合がありません。したがって、EclipseのJUnit機能はそうではありません。 Mavenの機能とその逆を認識しているため:
Maven test
の結果が表示されないsystemPropertyVariables
surefire構成など)を読み取りません。@Raghuramの回答では、彼はmvn test
(Eclipseの外部)または "Maven test"(Eclipseの内部)を実行しているため、これを機能させました。彼がJUnitEclipse統合を使用してテストコードも実行する場合、それらのプロパティのnull
値も取得します。
どのような解決策がありますか:
@Raghuramの回答で指摘されているように、Mavenを使用してテストを実行しますが、次の欠点があります。
別のIDE(InteliJ IDEAなど)を使用しますが、次の欠点があります。
eclipseの外部のターミナルを使用して、次の欠点があるテストを実行します。