maven surefire报告插件未运行测试用例

时间:2016-12-26 09:13:08

标签: maven junit maven-surefire-plugin

我已将 surefire报告插件配置为基于Spring + Maven的项目以生成测试报告,并且surefire报告插件能够识别我的测试类但不运行其中存在的测试用例

pom.xml中使用的依赖项

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.18.1</version>
      </plugin>
    </plugins>
  </reporting>

在构建项目时,它会将结果生成为

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.thales.idct.controller.LopaReConfigControllerTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@1829ae5e
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.225 sec

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] 

* .html报告中也存在相同的内容。

Bellow是我的测试用例代码

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigWebContextLoader.class)
@WebAppConfiguration
public class LopaReConfigControllerTest {


    public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));

    // Application dependency 

    private MockMvc mvc;
    private LopaReConfigRepositoryImpl lopaImpl;

    /*@Spy
    @InjectMocks
    LopaReConfigService lopaReConfigService = new LopaReConfigService();*/

    @Mock
    LopaReConfigService lopaReConfigService;

    @Mock
    CommonUtil commonUtil;

    @Mock
    ProcessLopaReconfigFile processLopaReconfigFile;

    @Mock
    DBImportRepository dbImportRepository;

    @InjectMocks
    MockHttpSession session;

    @Autowired
    WebApplicationContext context;

    @InjectMocks
    LopaReConfigController lopaReConfigController;

    @Mock
    UserSessionPool sessionPool;

    // Building and Injecting mocked dependency(s) to controller 

    @Before
    public void setup() {

        // Process mock annotations
        MockitoAnnotations.initMocks(this);

        this.mvc = MockMvcBuilders.standaloneSetup(lopaReConfigController).build();

        lopaImpl = new LopaReConfigRepositoryImpl();
    }

    @Test
    public void test_getSeatLayoutDisplay() throws Exception {

        // Construct JSON data to pass as parameter

        BASeatkitDataFeeder seatKitDataFeeder = new BASeatkitDataFeeder();
        Gson gson = new Gson();
        CommonUtil util = new CommonUtil();
        StringBuffer filePathBuff = new StringBuffer();
        String jsonStub = "";
        String columnXMl = ""; 

        filePathBuff.append(util.getLopaReConfigPath("RAJESH-300ER", "RAJESH-300ER-B777-v300B"));
        filePathBuff.append(LoadPropertyFiles.getInstance().getProperty("INPUT"));

        //seatKitDataFeeder.setFilepath(XmlFilePath);

        seatKitDataFeeder.setMode("");
        seatKitDataFeeder.setFilename("");
        seatKitDataFeeder.setBuildVersion("Base");
        seatKitDataFeeder.setCarrierName("RAJESH-300ER");
        seatKitDataFeeder.setDbId("1558");
        seatKitDataFeeder.setDbName("RAJESH-300ER-B777-v300B");
        seatKitDataFeeder.setSessionId(session.getId());
        seatKitDataFeeder.setFilepath(filePathBuff.toString());

        String seatKitXmlFilePath = filePathBuff.append(LoadPropertyFiles.getInstance().getProperty("XMLS")).toString();
        columnXMl = filePathBuff.append(Constants.COLUMN_XML_FILENAME).toString();

        BASeatKitInfo BAinfo = lopaImpl.getBASeatKit(seatKitXmlFilePath);
        KitLayout kitLayout = lopaImpl.getBAColumnSeatKit(seatKitXmlFilePath+Constants.SEATKIT_COLUMN_XML_FILENAME,columnXMl);

        // Mock the service results and feed 

        when(commonUtil.getLopaReConfigPath("RAJESH-300ER", "RAJESH-300ER-B777-v300B")).thenReturn(filePathBuff.toString());
        when(lopaReConfigService.getBASeatKit(Mockito.anyString())).thenReturn(BAinfo);
        when(lopaReConfigService.getBAColumnSeatKit(Mockito.anyString(),Mockito.anyString())).thenReturn(kitLayout);

        // Construct JSON Object

        jsonStub = gson.toJson(seatKitDataFeeder);

        // Test method logic 

        mvc.perform(post("/getSeatLayoutDisplay")
            .contentType(MediaType.APPLICATION_JSON).content(jsonStub))
            .andExpect(status().isOk()) // After hitting specific URL/URI check the status code fall under 200 series
            .andExpect(content().contentType(APPLICATION_JSON_UTF8)); // Check the return statement is JSON
            //.andExpect(jsonPath("$.fieldErrors", hasSize(1)));
        // Verify that the getBASeatKit() method of the lopaReConfigService is called only once during execution.

        verify(lopaReConfigService, times(0)).getBASeatKit(seatKitXmlFilePath);
        verify(lopaReConfigService, times(0)).getBAColumnSeatKit(seatKitDataFeeder.getFilepath(),columnXMl);
    }


    @Test
    public void testGetBAColumnSeatKit() throws Exception{
        BAColumnSeatkitDataFeeder seatKitDataFeeder = new BAColumnSeatkitDataFeeder();
        Gson gson = new Gson();
        CommonUtil util = new CommonUtil();
        StringBuffer filePathBuff = new StringBuffer();
        String jsonStub = "";
        String columnXMl = ""; 
        String centerXmlFilePath = "";

        LopaReConfigController cntrl = PowerMockito.spy(lopaReConfigController);


        seatKitDataFeeder.setMode("");
        seatKitDataFeeder.setFileName("");
        seatKitDataFeeder.setBuildVersion("Base");
        seatKitDataFeeder.setCarrierName("BRITISH");
        seatKitDataFeeder.setDbId("1514");
        seatKitDataFeeder.setDbName("BRITISH-B787-PI-2-8");
        seatKitDataFeeder.setSessionId(session.getId());
        seatKitDataFeeder.setFilePath(filePathBuff.toString());

        when(processLopaReconfigFile.getImportStatus(Integer.parseInt(seatKitDataFeeder.getDbId()))).thenReturn(Constants.SUCCESS);

        filePathBuff = new StringBuffer(util.getLopaReConfigPath(seatKitDataFeeder.getCarrierName(),seatKitDataFeeder.getDbName()));
        filePathBuff.append(LoadPropertyFiles.getInstance().getProperty("INPUT"));
        String seatKitXmlFilePath = filePathBuff.append(LoadPropertyFiles.getInstance().getProperty("XMLS")).toString();

        StringBuffer columnXmlFileBuf = new StringBuffer(filePathBuff);
        columnXmlFileBuf.append(Constants.COLUMN_XML_FILENAME);
        String leftXmlFilePath = filePathBuff.append(Constants.COLUMN_SEATKIT).toString();
        String columnXmlFilePath = columnXmlFileBuf.toString();

        if("Base".equalsIgnoreCase(seatKitDataFeeder.getBuildVersion())){

            centerXmlFilePath = leftXmlFilePath;

        } else {

            centerXmlFilePath=lopaImpl.getLopaFilePath(seatKitDataFeeder.getBuildVersion(),seatKitDataFeeder.getDbId());
        }

        BASeatKitInfo seatKitInfo = lopaImpl.getBASeatKit(seatKitXmlFilePath);
        KitLayout   columnSeatKitLeft = lopaImpl.getBAColumnSeatKit(leftXmlFilePath,columnXmlFilePath);
        KitLayout   columnSeatKitCenter = lopaImpl.getBAColumnSeatKit(centerXmlFilePath,columnXmlFilePath);
        Map<String,String> powerMap = lopaImpl.getPowerUnitInfo(seatKitXmlFilePath);
        List<LayoutDesignVersionEntity> listLDVE = dbImportRepository.getLayoutDesignVersionList(Integer.parseInt(seatKitDataFeeder.getDbId()));


        User user = new User();

        user.setAirlineName("BRITISH-B787-PI-2-8");
        user.setGroupName("FFF");
        user.setLastLoginTime("12:12:12 10:09:09.656");
        user.setPassword("FFF");
        user.setUserName("FFF");


        UserSessionPool.getInstance().addUser(user);

//      when(commonUtil.getLopaReConfigPath(Mockito.anyString(),Mockito.anyString())).thenReturn(filePathBuff.toString());

        //when(commonUtil.getLopaReConfigPath("RAJESH-300ER", "RAJESH-300ER-B777-v300B")).thenReturn(filePathBuff.toString());
        when(commonUtil.getLopaReConfigPath("RAJESH-300ER", "RAJESH-300ER-B777-v300B")).thenReturn(filePathBuff.toString());
        when(lopaReConfigService.getBASeatKit(seatKitXmlFilePath)).thenReturn(seatKitInfo);
        when(lopaReConfigService.getBAColumnSeatKit(leftXmlFilePath,columnXmlFilePath)).thenReturn(columnSeatKitLeft);
        when(lopaReConfigService.getBAColumnSeatKit(centerXmlFilePath,columnXmlFilePath)).thenReturn(columnSeatKitCenter);
        when(lopaReConfigService.getPowerUnitInfo(seatKitXmlFilePath)).thenReturn(powerMap);
        when(dbImportRepository.getLayoutDesignVersionList(Integer.parseInt(seatKitDataFeeder.getDbId()))).thenReturn(listLDVE);

        jsonStub = gson.toJson(seatKitDataFeeder);
        System.out.println(jsonStub);

        PowerMockito.doNothing().when(cntrl,"isValidUser",seatKitDataFeeder.getSessionId());

        mvc.perform(post("/getSeatKitAndLopaInfo")
                .contentType(MediaType.APPLICATION_JSON).content(jsonStub))
                .andExpect(status().isOk());//.andExpect(jsonPath("airline", "B787-8").exists());// After hitting specific URL/URI check the status code fall under 200 series
                //.andExpect(content().contentType(APPLICATION_JSON_UTF8));// Check the return statement is JSON

        verify(lopaReConfigService, times(0)).getBASeatKit(seatKitXmlFilePath);

    }
}

如何运行测试类中的测试用例..? 有没有更好的测试用例报告工具..?

我的POM.xml文件如下所示

<build>
    <finalName>${pom.artifactId}</finalName>
    <plugins>

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
        </plugin>

    </plugins>
</build>

<dependencies>

    <!-- https://mvnrepository.com/artifact/org.jopendocument/jOpenDocument -->
    <dependency>
        <groupId>org.jopendocument</groupId>
        <artifactId>jOpenDocument</artifactId>
        <version>1.3</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-archiver</artifactId>
        <version>2.2</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.4</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.2.2</version>
    </dependency>

    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.2.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.2</version>
    </dependency>

    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.0.1.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.2.0.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.18.0-GA</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.2.6</version>
    </dependency>

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20090211</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.ldap</groupId>
        <artifactId>spring-ldap-core</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.0-alpha4</version>
    </dependency>
    <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.53</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>1.9</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.8</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
        <version>1.9.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.10-FINAL</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.10-FINAL</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <!-- http://mvnrepository.com/artifact/commons-lang/commons-lang -->
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>

    <!-- Unit testing dependency API's -->

    <!--Testing -->

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

    <!-- this is included in junit, make sure junit it version 4.11 -->
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>1.3</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.3</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.9.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>3.2.3.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>0.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path-assert</artifactId>
        <version>0.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-testng</artifactId>
        <!-- <version>${powermock.version}</version> -->
        <version>1.5.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.5.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

1 个答案:

答案 0 :(得分:1)

请从报告代码中删除 maven-surefire-report-plugin ,将bellow插件置于构建代码中

     <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${jdk.version}</source>
                        <target>${jdk.version}</target>
                    </configuration>
                </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <properties>
                    <property>
                        <name>junit</name>
                        <value>true</value>
                    </property>
                </properties>
            </configuration>
        </plugin>
    </plugins>
 </build>