如何在非Java项目上运行junit测试

时间:2017-01-31 15:36:45

标签: java eclipse maven junit

我有一个项目文件夹,但它不是一个java项目。这是一个maven项目。我已经写了一个junit测试,它在eclipse IDE中运行时运行得很好但是当我运行maven命令mvn install时,它似乎跳过了我的junit测试。我已将测试文件包含在src/test/java/中(我的测试名称为AppTest.java),主.java文件(使用main方法)位于src/main/java/中。我注意到我正在处理的项目是maven项目而不是maven java项目。我已经包含了当前文件夹结构的屏幕:

folder structure

Maven test output< - 不应该构建,因为我有一个应该失败的故意测试

这是POM。我删除/注释掉了一些敏感部分,所以pom文件可能在语法错误,但我使用的主要插件就在那里; tap4jjunitsurefire

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>integration-api-parent</artifactId>
        <groupId>uk.gov.dwp</groupId>
        <version>1.0.2</version>
    </parent>
    <artifactId>aa</artifactId>
    <version>1.0.6</version>
    <packaging>pom</packaging>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>aa</finalName>
        <plugins>
            <!-- plugin>
                <groupId>com.github.fracpete</groupId>
                <artifactId>latex-maven-plugin</artifactId>
                <configuration>
                    <forceBuild>true</forceBuild>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.fracpete</groupId>
                <artifactId>latex-maven-plugin</artifactId>
                <configuration>
                    <forceBuild>true</forceBuild>
                </configuration>
            </plugin-->
            <plugin>
                <!-- Plug-in utilised for the execution of the JMeter Integration Tests -->
                <!-- These tests are executed against the nominated integration server where as -->
                <!-- instance of AA exists -->
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>1.9.0</version>
                <executions>
                    <execution>
                        <id>jmeter-tests</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <ignoreResultErrors>false</ignoreResultErrors>
                    <suppressJMeterOutput>false</suppressJMeterOutput>
                    <overrideRootLogLevel>INFO</overrideRootLogLevel>
                </configuration>
            </plugin>
            <plugin>
                <!-- Step to copy the latest plug-ins that form this build to the integration server -->
                <!-- This is done using the SCP command via the ANT plug-in thus allowing it to execute on all platforms -->
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>

                    <dependency>
                        <groupId>ant</groupId>
                        <artifactId>ant-jsch</artifactId>
                        <version>1.6.5</version>
                    </dependency>
                    <dependency>
                        <groupId>com.jcraft</groupId>
                        <artifactId>jsch</artifactId>
                        <version>0.1.42</version>
                    </dependency>
                    <!-- https://mvnrepository.com/artifact/org.tap4j/tap4j -->
                    <dependency>
                        <groupId>org.tap4j</groupId>
                        <artifactId>tap4j</artifactId>
                        <version>4.2.1</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
            </plugin>
            <!-- plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/cassandra-assembly.xml</descriptor>
                        <descriptor>src/main/assembly/devenv-assembly.xml</descriptor>
                        <descriptor>src/main/assembly/main-assembly.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
            </plugin>
            <!-- plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>templating-maven-plugin</artifactId>
                <configuration>
                    <skipPoms>false</skipPoms>
                    <sourceDirectory>${project.basedir}/src/main/latex-templates</sourceDirectory>
                    <outputDirectory>${project.build.directory}/latex</outputDirectory>
                </configuration>
            </plugin-->
        </plugins>
    </build>
</project>

AppTest:

    package AccessGateway;

import static org.junit.Assert.*;

import java.io.File;

import org.junit.Test;
import org.tap4j.consumer.TapConsumer;
import org.tap4j.consumer.TapConsumerFactory;
import org.tap4j.model.TestSet;

public class AppTest {

     Practise prac;
     final String DIRECTORY = "C:\\Users\\Hello\\Desktop\\";

     @Test
        public void testHeaderProcessor() {
            prac = new Practise();
            assertFalse(prac.runTest(new File(DIRECTORY+"TAPHeaderProcessor.txt")));
        }

     @Test
        public void testHeaderPortForward() {
            prac = new Practise();
            assertFalse(prac.runTest(new File(DIRECTORY+"TAPHeaderPortForward.txt")));
        }

     @Test
        public void catunittest() {
            prac = new Practise();
            assertFalse(prac.runTest(new File(DIRECTORY+"catunittest.txt")));
        }

     @Test
        public void catunitcrowstest() {
            prac = new Practise();
            assertFalse(prac.runTest(new File(DIRECTORY+"catcrowd.txt")));
        }

     @Test
        public void testCrowd() {
            prac = new Practise();
            assertFalse(
                    prac.runTest(new File(DIRECTORY+"TAPCrowd.txt")));
        }


    @Test
    public void testADFS() {
        prac = new Practise();
        assertFalse(
                prac.runTest(new File(DIRECTORY+"TAPADFSformat.txt")));
    }



}

2 个答案:

答案 0 :(得分:1)

问题是您的项目的packaging pom

您无法在此类项目上执行Surefire。

答案 1 :(得分:0)

尝试添加surefire插件。当我在我的应用程序中进行测试时,我总是包含它(适用于junit和testng)。根据您的日志,我可以看到您没有声明它。

<plugins>
[...]
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>