2017-07-19 34 views
0

我試圖在應用程序服務器上測試覆蓋率分析,並且不想手動管理單元測試和端到端測試之間的jacoco版本。 有沒有辦法從代理從Gradle任務中獲取路徑,我可以依靠gradle將插件和手動連接之間的jacoco代理版本保持一致。在gradle中查找jacoco代理jar的位置(3.3)

最終目標是運行帶有jacoco代理的服務器,並在端到端測試期間收集測試覆蓋率信息。

+0

你可以附加你當前的build.gradle嗎? – chenrui

+0

唯一相關的部分是我使用jacoco插件。 '應用插件:「jacoco」',插件不指示它保存jar文件的位置。 – mehmetg

+0

我在我的回答中添加了一些想法,讓我知道如果這可以幫助你。 – chenrui

回答

2

您可以將代理程序作爲依賴項。根據頁面http://www.jacoco.org/jacoco/trunk/doc/repo.html:Maven座標 - groupdIdorg.jacoco,artifactIdorg.jacoco.agentclassifierruntime。這是打包到JAR中的相同工件,它提供對代理作爲資源的訪問(org.jacoco:org.jacoco.agent aka「獲取代理的本地副本的API」),並由Gradle JaCoCo Plugin使用。可以將版本指定爲變量,以便Gradle JaCoCo插件與依賴關係保持一致。

+0

這並不理想,但它比猜測或維護配置中的2個版本號更好。我現在有一個插件和代理版本。讓我們希望代理和插件將保持版本同步。 – mehmetg

1

根據Gradle doc,jacoco closure將配置爲toolVersion來控制jacocoagent版本。

jacoco { 
    toolVersion = "0.7.6.201602180812" 
} 

這裏是gradle source code來解決jacocoagent.jar

/** 
* Unzips the resolved {@code org.jacoco.agent.jar} to retrieve the {@code jacocoagent.jar}. 
* 
* @return a file pointing to the {@code jacocoagent.jar} 
*/ 
public File getJar() { 
    if (agentJar == null) { 
     agentJar = project.zipTree(getAgentConf().getSingleFile()).filter(new Spec<File>() { 
      @Override 
      public boolean isSatisfiedBy(File file) { 
       return file.getName().equals("jacocoagent.jar"); 
      } 
     }).getSingleFile(); 
    } 
    return agentJar; 
} 

事實上,如果你下載的罐子(如org.jacoco.agent-0.7.6.201602180812.jar),並解壓縮,你會看到它是在高層:

$ unzip org.jacoco.agent-0.7.6.201602180812.jar 
Archive: org.jacoco.agent-0.7.6.201602180812.jar 
    inflating: META-INF/MANIFEST.MF  
    inflating: META-INF/MTNMINDS.SF  
    inflating: META-INF/MTNMINDS.RSA 
    creating: META-INF/maven/ 
    creating: META-INF/maven/org.jacoco/ 
    creating: META-INF/maven/org.jacoco/org.jacoco.agent/ 
    inflating: META-INF/maven/org.jacoco/org.jacoco.agent/pom.xml 
    inflating: META-INF/maven/org.jacoco/org.jacoco.agent/pom.properties 
    creating: org/ 
    creating: org/jacoco/ 
    creating: org/jacoco/agent/ 
    inflating: jacocoagent.jar   
    inflating: org/jacoco/agent/AgentJar.class 
    inflating: about.html 

讓我知道這是否有幫助。