Создание проектов для Android с помощью TeamCity — проблемы с тестированием и покрытием кода

Я работаю над проектом, состоящим как из кода .NET, так и из проектов Java для Android. Мы пытаемся заставить оба типа проектов работать в одной среде TeamCity.

Проекты .NET тестируются в рамках некоторых проектов NUnit, и мы используем DotCover для составления отчетов о покрытии, и, похоже, все идет хорошо. Сейчас проекты android/java строятся с помощью ant runners, и у нас есть несколько build-скриптов как для продакшена, так и для тестовых проектов, и проблема, похоже, в создании отчетов о покрытии java.

Мы создали шаг сборки со следующими целями ant:

clean emma debug install test

На шаге сборки включен «обработчик покрытия Emma» (с установленным флажком «Включить исходные файлы в данные покрытия»).

При выполнении шага сборки возникает ошибка, в которой указывается следующее во фрагменте журнала (полный файл журнала прилагается). Еще одна важная проблема заключается в том, что модульные тесты android/java не отображаются в общей статистике сборки.

Вот фрагмент лога:

[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

Кто-нибудь знает, в чем может быть проблема?

Кстати, когда я запускаю цели напрямую из командной строки, отчеты строятся без проблем.

С уважением, Per

5
задан Per Erik Gransøe 6 March 2012 в 08:55
поделиться