これらのテストは、jarファイルがビルドされた後に実行する必要があります。彼らはそれがまったく実行されているかどうか、そして特定の入力ファイルが与えられたときに正しいコンソール出力を生成するかどうかをテストする必要があります。
コンソールアプリケーションのそのようなテストのいくつかの例を指摘できますか?これらのテストは、Mavenで使用するためにJavaで作成する必要がありますか?
同様の質問(コンソールベースのアプリケーション/プログラムのテスト-Java)がありますが、必要なのは単体テストではなくブラックボックステストです。そして、それはMavenについては言及していません。
アップデート:
非常に簡単に実行できることがわかりました。私の最初の問題は、ここで非常に多くの定義を見た後の統合テストの誤解でした(ユニットテスト、統合テスト、スモークテスト、回帰テストとは何ですか? ;ユニット、機能、受け入れ、統合テストの違いは何ですか? ;ユニットテストとは何ですか?統合テスト、および他にどのような種類のテストについて知っておくべきですか? ;統合テストとは正確には何ですか?)2番目の問題は、これらのテストをJavaで作成するつもりはなかったということでしたが、最終的にはの使用方法を学ぶ必要がありましたjava.lang.Runtime
。
まず、これをpom.xmlに追加しました:
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
次に、 src / test/javaに*IT.javaファイルを作成しました。
public class MyAppIT {
@Test
public void test() throws IOException {
Runtime runtime = Runtime.getRuntime();
String cmd = "java -cp target/myapp.jar my.app.Main";
Process process = runtime.exec(cmd);
InputStreamReader isr = new InputStreamReader(process.getErrorStream());
BufferedReader br = new BufferedReader(isr);
Boolean containsUsage = false;
String line;
while ((line = br.readLine()) != null) {
if (line.contains("Usage")) {
containsUsage = true;
}
}
assertTrue(containsUsage);
}
}
現在、 mvnパッケージの代わりにmvnverifyを使用しています。
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0