這些測試應該在之後運行這個jar文件被構建。 他們應測試它是否運行, 以及它是否在給定某些輸入文件的情況下生成正確的控制檯輸出。如何使用Maven測試Java控制檯應用程序?
請問您可以指出控制檯應用程序的這些測試的一些示例嗎?這些測試是否必須用Java編寫才能用於Maven?
還有一個類似的問題(Testing console based applications/programs - Java),但我需要的是黑匣子測試,而不是單元測試。它沒有提到Maven。
UPDATE:
原來,它VAS很容易做到的。我的第一個問題是在看到如此多的定義(What is Unit test, Integration Test, Smoke test, Regression Test?; What's the difference between unit, functional, acceptance, and integration tests?; What are unit testing and integration testing, and what other types of testing should I know about?; What is an integration test exactly?)之後,對集成測試有一個誤解。第二個問題是我不打算用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驗證而不是mvn包。
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
是的,我要的是測試如果程序實際運行,沒有如果「** **爲主」的方法運作。我不會稱之爲我的程序的界面測試不允許任何用戶交互。它只是處理輸入文件並輸出結果。 – utapyngo
命令行調用會發出對主方法的調用。您可以使用Runtime來執行「java my.app.Main」命令,您在測試項目中擁有完整的java可能性。 – burna
不滿意 - 還有問題嗎? – burna