[英]How to get JUnit tests to run after JNI .so creation with native-maven plugin
我有一個項目,創建一個jni .so文件和一個java .jar文件。 除JUnit測試執行外,所有這些都按預期工作。 我需要在native-maven-plugin創建.so文件之后運行JUnit測試。 添加新JNI方法時,JUnit測試將始終失敗,因為它們在創建共享庫之前運行。 是構建兩次的唯一選擇嗎? 意思是一旦跳過測試構建,然后單獨執行測試或再次運行構建以執行測試?
我猜你是使用native-maven-plugin中的native:link目標 ?
如果您查看目標文檔,您會看到它默認綁定到生命周期階段包 。
junit tests(由maven-surefire-plugin運行)默認在生命周期階段測試中運行(https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html)。
在maven生命周期參考中,您可以看到測試階段在包階段之前。 這解釋了為什么在進行更改后測試失敗的原因。 首先運行測試,然后生成.so文件。
您可以使用maven-failsafe-plugin在打包階段后運行測試。
將插件添加到構建中,並將所有應在包之后運行的測試命名為MySpecificFeatureIT (后綴IT代表Integration Test)。 名為MyFeatureTest的測試仍將在測試階段運行。
有關更多詳細信息,請參閱插件文檔
好的,這是一個項目結構問題。 我試圖獲得屬於不同項目的測試,以便在我的JNI之后運行.so是在我的JNI項目中構建的。 我需要做的是將我在src / java / test中創建的JNI集成測試放在JNI項目中,而不是另一個項目並嘗試以某種方式對它們進行排序。
jni -
|
src
|
java
|
test
不
other project-
|
src
|
java
|
test
當然,maven在另一個項目建成后運行了另一個項目測試。 這就是它想要做的事情。 即使JNI項目構建了一個C .so文件。 在運行java測試時,用於測試的Java規則仍適用於JNI項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.