2017-11-27 6 views
0

私のユーティリティクラスの1つに<systemPropertyVariables>のユーザで実行する必要がある状況がありました。ユーザ定義のシステム変数がtestng suiteとして実行されたときにnullポインタ例外をスローする

<systemPropertyVariables> 
<environment>uat</environment>      
</systemPropertyVariables> 

私はこれをpom.xmlファイルで定義しました。私のユーティリティクラスの内部

私はのpom.xmlてテストケースを実行すると、それが正常に動作

System.getProperty("environment"); 

の下に使用して、この値を抽出しています。しかし、testing.xmlファイルやtestngテストでそれを実行しようとすると、nullpointerExceptionが返されます。

私は一時的な解決策として実行コンフィギュレーションにvmargumentsを定義しましたが、このコードが再度配布されると、実行コンフィギュレーションはローカルマシンに限定されているため、これは動作しません。

誰でもこのエラーの解決方法を教えてください。 SystemPropertyVariableをどこで定義すればよいのですか。これは、testngスイートを個別に実行するときにも機能します。

答えて

0

あなたができることの1つは、パラメータタグを使用してtestNGからこの値を渡すことです。これらの値をTestクラスで取得できます。これにより、これをmavenとtestngの両方から実行することができます

+0

意味がありますが、私はデバッグの目的でtestngを実行するだけでした。 これはヒットした最初のソリューションでした。それほど有用ではありませんでした。 スイートがコマンドライン引数からVMを実行すると、 私はそれを処理するためのコアJavaコードを書いています。 –

+0

スイートがコマンドラインから起動されたとしても、testngにはパラメータがあり、それに応じて実行されるか、またはmavenのパラメータがtestngパラメータ – Jyothi

+0

yesを使用していればコードチェックでそれを処理できます。ありがとうJyothi –

0

こんにちは私はフレームワークを設計する際にこのタイプの問題に悩まされている方は、

は、それだけであなたがtestng.xml経由で実行したときにあなたのコードを処理します(あなたの主要なテスト実行の一部ではないです)、我々は、他の例外を取得するときに失敗した単純なJavaコード

try{ 
your code 
}catch(NullPointerException ee){ 
environment=""; 
e.printStackTrace(); 
}catch(Exception e){ 
Assert.assertTrue(fail); 
} 

を書きます。

関連する問題