17 3月 2011

Maven 同時使用Emma 與Surefire會執行兩次Unit test的解決方式

emma-maven-plugin的開發人員認為,被instrumented過的test class不等同於原來的test class,可能會造成原來test不會通過,但在emma處理後而可以通過,或是反過來的情形發生。所以在pom中如果同時加上emma-maven-plugin與maven-surefire-plugin,就會跑兩次的unit test。

如果可以接受被emma instrumented過的test class可以代表原來的test class,那解決的方式就還蠻容易的,簡單說, 就是讓surefire執行被instrumented過的test class,但是要求emma在test或site之類的phase不做事。
設定如下



	org.sonatype.maven.plugin
	emma-maven-plugin
	1.2
	
		
			instrument
			process-classes
			
				instrument
			
		
		
			test
			test
			
				true
			
		
		
			site
			site
			
				true
			
		
	



	org.apache.maven.plugins
	maven-surefire-plugin
	2.8
	true
	
	
		once
		xml
		${project.build.directory}/generated-classes/emma/classes
	


Report的部份不用特別修改


	
		
		
			org.sonatype.maven.plugin
			emma-maven-plugin
			1.2
		

		
			org.apache.maven.plugins
			maven-surefire-report-plugin
			2.8
		

沒有留言: