8

複数のユニットテストとコンポーネントテストがありますが、いくつかのバージョンのJava(1.6,1.7,1.8など)に対してテストしたいと思います。複数のJavaバージョンに対してテストするための最良の方法

私はそれに最善の方法論があるのだろうか?

Jenkinsを使用して複数のテストを実行し、JAVA_HOME変数のパスを別のJREに変更するたびにテストを実行する必要がありますか?

Mavenプラグインを使用できますか?たぶん異なるプロファイルですか?

さらに、TestNGを使用してJREバージョンに基づいてテストを除外する方法はありますか? java.versionシステムプロパティのif文を使って処理できますが、よりエレガントな方法があるのだろうかと思います。

これが答えに影響する場合は、いくつかのOSタイプと複数のバージョンの製品に対してテストしたいと思います(v1.0、v2.0などと同じテスト) 。

+0

私がlinux(ubuntu)で知っている限り、Javaのいくつかのバージョンをインストールして、デフォルトを変更することができます – nafas

+0

おそらくシミュレータのようなもの? – smac89

+0

私は何が最良の方法論であるか分かりませんが、私はmavenと一緒に行くでしょう。あなたはパラメータ経由でjavaバージョンを渡すことができます。したがって、各バージョンごとに異なるジェンキンタスクを簡単に作成できます – user902383

答えて

6

異なる条件で同じコードを実行するには、異なるスクリプトJAVA_HOMEまたは他の設定で同じスクリプトを実行するだけです。別のトリガにまたは1つの多段ジョブの一部としてこれを行うと、TestNGのためとして、あなた

のために決定され、この答えHow to disable testng test based on a condition

0

可能なアプローチがmaven toolchains pluginと組み合わせるのmavenのプロファイルを使用することです参照してください。

ビルドサーバーで複数のJDKを構成し、各JDKで単体テストを実行する個別のプロファイルを持つようにpom xmlを構成します。

異なるJavaランタイムだけでなく、異なるターゲットクラスのバージョンもテストすることを検討することをお勧めします。異なるコンパイル設定で異なるプロファイルを使用することで、これをプロファイルアプローチと組み合わせることもできます。

最後に、exclusion of sure fire testsもプロファイルから行うことができます。これにより、プロファイルも制御できます。

0

私は、TravisCIを使用する多くのオープンソースプロジェクトで使用されている方法論の1つに気付いています。これらのプロジェクトでは、.travis.ymlファイル(TravisCIのメタデータファイル)にはこの情報が含まれています。例: -

jdk: 
    - oraclejdk7 
    - oraclejdk8 
    - openjdk6 
    - openjdk7 

私はまた私のオープンソースプロジェクト(see here)のいずれかでそれを使用。業界では他の合理化されたプロセスがあるのか​​どうかは分かりませんが、それは組織によって異なり、組織やプロジェクトによって異なる可能性があります。

関連する問題