2015-09-02 10 views
5

Ich möchte eine Mutationstestabdeckung erstellen. Ich mache POC auf PI Test , aber es nimmt nicht meine Testklassen und scheitert. Ich habe das PTTest-Plugin in pom.xml konfiguriert. Ich habe den Paketnamen der Zielklasse überprüft, und der Name der Zieltestklasse ist in der Datei pom.xml korrekt.PTTest schlägt fehl und erzeugt keine Mutationsabdeckung

ich unten Störung erhalten -

10:50:29 AM PIT >> INFO : Mutating from D:\IR\workspace\cleanup_trunk\reporterDx-service\target\classes 
10:50:29 AM PIT >> INFO : Verbose logging is disabled. If you encounter an problem please enable it before reporting an issue. 
10:50:30 AM PIT >> INFO : Sending 0 test classes to slave 
10:50:30 AM PIT >> INFO : Sent tests to slave 
10:50:30 AM PIT >> INFO : Calculated coverage in 0 seconds. 
10:50:30 AM PIT >> INFO : Created 0 mutation test units 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 4.575s 
[INFO] Finished at: Wed Sep 02 10:50:30 IST 2015 
[INFO] Final Memory: 13M/244M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.pitest:pitest-maven:1.1.4:mutationCoverage (default-cli) on project reporterDx-service: Execution default-cli of goal org.pitest:p 
itest-maven:1.1.4:mutationCoverage failed: No mutations found. This probably means there is an issue with either the supplied classpath or filters. 
[ERROR] See http://pitest.org for more details. 
[ERROR] -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.pitest:pitest-maven:1.1.4:mutationCoverage (default-cli) on project reporterDx-ser 
vice: Execution default-cli of goal org.pitest:pitest-maven:1.1.4:mutationCoverage failed: No mutations found. This probably means there is an issue with either the 
supplied classpath or filters. 
See http://pitest.org for more details. 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.pitest:pitest-maven:1.1.4:mutationCoverage failed: No mutations found. 
This probably means there is an issue with either the supplied classpath or filters. 
See http://pitest.org for more details. 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110) 

Dies ist meine pom.xml Datei -

<plugin> 
    <groupId>org.pitest</groupId> 
    <artifactId>pitest-maven</artifactId> 
    <version>1.1.4</version> 
    <configuration> 
     <targetClasses> 
      <param>com.mutation.dx.pitestdemo</param> 
     </targetClasses> 
     <targetTests> 
      <param>com.mutation.dx.pitestdemo</param> 
     </targetTests> 
    </configuration> 
</plugin> 

unten ist meine Klasse, auf das ich Mutation erzeugen will

package com.mutation.dx.pitestdemo; 

import org.springframework.beans.factory.annotation.Autowired; 

public class PIDemoImpl implements PIDemo { 

    @Autowired 
    private PIDemoDao piDemoDao; 

    @Override 
    public PIDto getPIDetails(String name, int firstNumber,int secondNumber) { 
     int thirdNumber = firstNumber * secondNumber; 
     PIDomain piDomain = piDemoDao.getPIDomain(name, thirdNumber); 
     if(piDomain != null) { 
      PIDto piDto = new PIDto(); 
      piDto.setName(piDomain.getName()); 
      int result = piDomain.getX() + piDomain.getY(); 
      if(result >= 0) { 
       piDto.setResult(result); 
      } 
      return piDto; 
     } 
     return null; 
    } 
} 

unten ist meine Testklasse -

package com.mutation.dx.pitestdemo; 

import org.junit.Assert; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.InjectMocks; 
import org.mockito.Mock; 
import static org.mockito.Mockito.when; 
import static org.mockito.Mockito.verify; 
import org.mockito.runners.MockitoJUnitRunner; 

import com.mutation.dx.pitestdemo.PIDemoImpl; 

@RunWith(MockitoJUnitRunner.class) 
public class PIDemoImplTest { 
    @Mock 
    private PIDemoDao piDemoDao; 

    @InjectMocks 
    PIDemoImpl piDemoImpl; 

    @Test 
    public void getPIDetailsTest(){ 
     String name = "Persistent"; 
     int firstNumber = 0; 
     int secondNumber = 10; 
     int thirdNumber = 0; 
     PIDomain piDomain = new PIDomain(); 
     piDomain.setName(name); 
     piDomain.setX(2); 
     piDomain.setY(2); 
     when(piDemoDao.getPIDomain(name, thirdNumber)).thenReturn(piDomain); 
     PIDto piDto = piDemoImpl.getPIDetails(name , firstNumber, secondNumber); 
     Assert.assertNotNull(piDto); 
     Assert.assertEquals(piDto.getName(),name); 
     verify(piDemoDao).getPIDomain(name, thirdNumber); 
    } 
} 

Ich benutze Mockito, um die Objekte zu verspotten.

Antwort

6

Ihre Filter sehen nicht korrekt aus. Pitest erwartet Globs, die mit dem vollständig qualifizierten Namen jeder Klasse verglichen werden.

Statt

com.mutation.dx.pitestdemo

Versuchen

com.mutation.dx.pitestdemo.*

Die * wilcard sollte dann im Paket alle Klassen entsprechen.

Ab 1.2.0 targetClasses und targetTests müssen normalerweise nicht angegeben werden, wenn Sie von maven aus starten - pitest scannt jetzt das Projekt und ermittelt automatisch, welche Pakete im Projekt definiert sind.

+0

Danke Henry. Deine Lösung hat mein Problem gelöst. –