2012-03-06 4 views
5

मैं एक परियोजना पर काम कर रहा हूं जिसमें .NET कोड और एंड्रॉइड जावा परियोजनाएं शामिल हैं। हम एक टीमसिटी पर्यावरण में काम कर रहे दोनों प्रकार की परियोजनाएं प्राप्त करने की कोशिश कर रहे हैं।टीमसिटी के साथ बिल्डिंग एंड्रॉइड परियोजनाएं - परीक्षण और कोड कवरेज मुद्दे

कुछ एनएनआईटी परियोजनाओं के माध्यम से .NET परियोजनाओं का परीक्षण किया जा रहा है, और हम कवरेज रिपोर्ट तैयार करने के लिए डॉटकॉवर का उपयोग करते हैं और सभी सूजन लगते हैं। अब, एंड्रॉइड/जावा परियोजनाएं चींटी धावकों का उपयोग करके बनाई जा रही हैं, और हमारे पास उत्पादन और परीक्षण परियोजनाओं के लिए कुछ बिल्ड-स्क्रिप्ट हैं, और ऐसा लगता है कि जावा कवरेज रिपोर्टों का निर्माण होता है।

हम निम्नलिखित चींटी लक्ष्य के साथ एक निर्माण कदम बना लिया है: "कवरेज डेटा में शामिल करें स्रोत फ़ाइलें"

clean emma debug install test 

निर्माण कदम "एम्मा कवरेज धावक" सक्षम (विकल्प के साथ है करने के लिए सेट कर दिया जाता चेक किए गए)।

बिल्ड स्निपेट (निम्न लॉग फ़ाइल संलग्न है) में निम्न बताते हुए बिल्ड चरण चलाते समय एक त्रुटि उत्पन्न होती है। एक और महत्वपूर्ण मुद्दा यह है कि एंड्रॉइड/जावा यूनिट परीक्षण बिल्ड के समग्र आंकड़ों में प्रकट नहीं होते हैं।

[16:37:52]: [aapt] Generating resource IDs... 
[16:37:55]: [subant] -pre-compile 
[16:37:55]: [subant] -compile (1s) 
[16:37:55]: [-compile] do-only-if-manifest-hasCode (1s) 
[16:37:55]: [do-only-if-manifest-hasCode] sequential (1s) 
[16:37:55]: [sequential] if (1s) 
[16:37:55]: [if] Adding debug=true parameter to javac task 
[16:37:55]: [if] javac 
[16:37:55]: [if] Compiling 1 source file to C:\BuildAgent\work\c588ac2d935670cb\MyAndroidProject\bin\classes 
[16:37:55]: [if] EMMA: Instrumenting classes 
[16:37:55]: [EMMA: Instrumenting classes] EMMA commandline: [-ix, -*Test*, -cp, C:\BuildAgent\work\c588ac2d935670cb\MyAndroidProject\bin\classes, -m, overwrite] 
[16:37:55]: [EMMA: Instrumenting classes] EMMA: processing instrumentation path ... 
[16:37:56]: [EMMA: Instrumenting classes] EMMA: instrumentation path processed in 265 ms 
[16:37:56]: [EMMA: Instrumenting classes] EMMA: [167 class(es) instrumented, 0 resource(s) copied] 
[16:37:56]: [EMMA: Instrumenting classes] EMMA: metadata merged into [C:\BuildAgent\work\c588ac2d935670cb\coverage.em] {in 15 ms} 
[16:37:56]: [if] if 
[16:37:56]: [if] echo 
[16:37:56]: [echo] Instrumenting classes from C:\BuildAgent\work\c588ac2d935670cb\MyAndroidProject\bin/classes... 
[16:37:56]: [if] emma 
[16:37:56]: [emma] com.vladium.emma.EMMARuntimeException: [OUT_IO_FAILURE] exception occurred while writing output file [C:\BuildAgent\work\c588ac2d935670cb\coverage.em]: 
[16:37:56]: [do-only-if-manifest-hasCode] The following error occurred while executing this line: C:\Android\android-sdk\tools\ant\build.xml:655: com.vladium.emma.EMMARuntimeException: [OUT_IO_FAILURE] exception occurred while writing output file [C:\BuildAgent\work\c588ac2d935670cb\coverage.em]: 
[16:37:56]: [subant] The following error occurred while executing this line: C:\Android\android-sdk\tools\ant\build.xml:602: The following error occurred while executing this line: C:\Android\android-sdk\tools\ant\build.xml:655: com.vladium.emma.EMMARuntimeException: [OUT_IO_FAILURE] exception occurred while writing output file [C:\BuildAgent\work\c588ac2d935670cb\coverage.em]: 
[16:37:56]: [Step 1/18] EMMA: Create Report (4s) 
[16:38:00]: [EMMA: Create Report] Unable to find C:\BuildAgent\work\c588ac2d935670cb\coverage.ec, cannot create EMMA report 
[16:38:00]: [Step 1/18] Process exited with code 1 
[16:38:00]: [Step 1/18] Ant output: 
[16:38:00]: [Step 1/18] at java.lang.reflect.Method.invoke(Method.java:601) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Task.perform(Task.java:348) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
[16:38:00]: [Step 1/18] at com.android.ant.IfElseTask.execute(IfElseTask.java:120) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
[16:38:00]: [Step 1/18] at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) 
[16:38:00]: [Step 1/18] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
[16:38:00]: [Step 1/18] at java.lang.reflect.Method.invoke(Method.java:601) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Task.perform(Task.java:348) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Target.execute(Target.java:390) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Target.performTasks(Target.java:411) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Project.executeTarget(Project.java:1368) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Project.executeTargets(Project.java:1251) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Main.runBuild(Main.java:809) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.Main.startAnt(Main.java:217) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
[16:38:00]: [Step 1/18] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 
[16:38:00]: [Step 1/18] Caused by: java.io.IOException: cannot merge new data into [C:\BuildAgent\work\c588ac2d935670cb\coverage.em]: created by another EMMA version [0.0.0] 
[16:38:00]: [Step 1/18] at com.vladium.emma.data.DataFactory.persist(DataFactory.java:593) 
[16:38:00]: [Step 1/18] at com.vladium.emma.data.DataFactory.persist(DataFactory.java:71) 
[16:38:00]: [Step 1/18] at com.vladium.emma.instr.InstrProcessorST._run(InstrProcessorST.java:753) 
[16:38:00]: [Step 1/18] ... 71 more 
[16:38:00]: [Step 1/18] Total time: 6 seconds 
[16:38:00]: [Step 1/18] Publishing artifacts 
[16:38:00]: [Publishing artifacts] Paths to publish: [C:\BuildAgent\work\c588ac2d935670cb\coverage.ec, C:\BuildAgent\work\c588ac2d935670cb\coverage.em, C:\BuildAgent\work\c588ac2d935670cb\coverage.txt, C:\BuildAgent\work\c588ac2d935670cb\coverage\coverage.zip] 
[16:38:00]: [Publishing artifacts] Artifacts path coverage.ec not found 
[16:38:00]: [Publishing artifacts] Artifacts path coverage.txt not found 
[16:38:00]: [Publishing artifacts] Artifacts path coverage/coverage.zip not found 
[16:38:00]: [Publishing artifacts] Sending files 
[16:38:00]: [Step 1/18] Failed to extract Emma coverage statistics from the coverage.txt, due to error: java.io.FileNotFoundException: C:\BuildAgent\work\c588ac2d935670cb\coverage.txt (The system cannot find the file specified) 
[16:38:00]: [Step 1/18] Step Test Smart Client - Unit tests (Ant) failed 

किसी को क्या समस्या हो सकती है के लिए एक विचार है:

यहाँ लॉग SNIPPIT है?

वैसे, जब मैं सीधे कमांड लाइन से लक्ष्य चलाता हूं, तो रिपोर्ट किसी भी समस्या के बिना बनाई जाती है।

सादर, प्रति

उत्तर

6

Android SDK द्वारा प्रयोग किया जाता एम्मा संस्करण सोनार एम्मा प्लगइन द्वारा इस्तेमाल किया एक से अधिक पुराना है।

ऐसा लगता है कि कोड कवरेज को संस्करणों के बीच एन्कोड किया गया है, इसीलिए सोनार प्रारूप को पहचान नहीं सकता है।

सौभाग्य से, कोई ट्रांसकोडर के साथ आया था। इस मुद्दे को यहां अधिक विस्तार से वर्णित किया गया है: http://jira.codehaus.org/browse/SONARPLUGINS-1356

उपर्युक्त ट्रांसकोडर के लिए जावा कोड भी वहां से डाउनलोड किया जा सकता है।

आपको सोनार चलाने से पहले सभी .em और .ec फ़ाइलों को ट्रांसकोड करना होगा और इसे ठीक-ठीक और परीक्षण करना चाहिए।

+0

आज आप शानदार रूप से सहायक रहे हैं! – Argyle

+2

यह पता लगाना मुश्किल था कि बाहर, मैं नहीं चाहता कि कोई और मेरे भाग्य को साझा करे :) – Rosomack

+0

बहुत बढ़िया, यह बहुत उपयोगी था और पूरी तरह से काम किया: मैंने EmmaTranscoder.class को कवरेज फ़ाइलों के रूप में उसी निर्देशिका में कॉपी किया और 'जावा' निष्पादित किया -सीपी EmmaTranscoder कवरेज। [Ec | em] ' – friederbluemle

संबंधित मुद्दे