簡體   English   中英

如何使用native-maven插件在JNI .so創建之后運行JUnit測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM