Java Maven找不到要运行的JUnit测试

我有一个Maven程序,它可以正常编译。当我运行mvn test它时,它不会运行任何测试(在TESTs标头下显示There are no tests to run.)。

我已经用一个超级简单的设置重新创建了这个问题,我将在下面以及运行时将其包括在内-X。

单元测试可以从eclipse正常运行(都使用其默认的junit软件包,而当我包括maven下载的junit.jar时)。而且mvn test-compile可以在test-classes下正确创建该类。我在带有Maven 3.0.2和Java 1.6.0_24的OSX 10.6.7上运行此代码。

这是目录结构:

/my_program/pom.xml

/my_program/src/main/java/ClassUnderTest.java

/my_program/src/test/java/ClassUnderTestTests.java

pom.xml:

<?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>

<groupId>my_group</groupId>

<artifactId>my_program</artifactId>

<packaging>jar</packaging>

<version>1.0-SNAPSHOT</version>

<name>My Program</name>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.5</source>

<target>1.5</target>

</configuration>

</plugin>

</plugins>

</build>

</project>

ClassUnderTest.java:

public class ClassUnderTest {

public int functionUnderTest(int n) {

return n;

}

}

ClassUnderTestTests.java:

import org.junit.Assert;

import org.junit.Before;

import org.junit.Test;

public class ClassUnderTestTests {

private ClassUnderTest o;

@Before

public void setUp() {

o = new ClassUnderTest();

}

@Test

public void testFunctionUnderTest_testCase1() {

Assert.assertEquals(1, o.functionUnderTest(1));

}

@Test

public void testFunctionUnderTest_testCase2() {

Assert.assertEquals(2, o.functionUnderTest(2));

}

}

mvn -X测试结束:

`[DEBUG] Configuring mojo org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:2.7.1, parent: sun.misc.Launcher$AppClassLoader@5224ee]

[DEBUG] Configuring mojo ‘org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test’ with basic configurator –>

[DEBUG] (s) basedir = /Users/aaron/Programs/my_program

[DEBUG] (s) childDelegation = false

[DEBUG] (s) classesDirectory = /Users/aaron/Programs/my_program/target/classes

[DEBUG] (s) disableXmlReport = false

[DEBUG] (s) enableAssertions = true

[DEBUG] (s) forkMode = once

[DEBUG] (s) junitArtifactName = junit:junit

[DEBUG] (s) localRepository = id: local

url: file:///Users/aaron/.m2/repository/

layout: none

[DEBUG] (f) parallelMavenExecution = false

[DEBUG] (s) pluginArtifactMap = {org.apache.maven.plugins:maven-surefire-plugin=org.apache.maven.plugins:maven-surefire-plugin:maven-plugin:2.7.1:, org.apache.maven.surefire:surefire-booter=org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile, org.apache.maven.surefire:surefire-api=org.apache.maven.surefire:surefire-api:jar:2.7.1:compile, org.apache.maven.surefire:maven-surefire-common=org.apache.maven.surefire:maven-surefire-common:jar:2.7.1:compile, org.apache.maven.shared:maven-common-artifact-filters=org.apache.maven.shared:maven-common-artifact-filters:jar:1.3:compile, org.codehaus.plexus:plexus-utils=org.codehaus.plexus:plexus-utils:jar:2.0.5:compile, junit:junit=junit:junit:jar:3.8.1:compile, org.apache.maven.reporting:maven-reporting-api=org.apache.maven.reporting:maven-reporting-api:jar:2.0.9:compile}

[DEBUG] (s) printSummary = true

[DEBUG] (s) project = MavenProject: my_group:my_program:1.0-SNAPSHOT @ /Users/aaron/Programs/my_program/pom.xml

[DEBUG] (s) projectArtifactMap = {junit:junit=junit:junit:jar:4.8.1:test}

[DEBUG] (s) redirectTestOutputToFile = false

[DEBUG] (s) remoteRepositories = [ id: central

url: http://repo1.maven.org/maven2

layout: default

snapshots: [enabled => false, update => daily]

releases: [enabled => true, update => never]

]

[DEBUG] (s) reportFormat = brief

[DEBUG] (s) reportsDirectory = /Users/aaron/Programs/my_program/target/surefire-reports

[DEBUG] (s) session = org.apache.maven.execution.MavenSession@dfbb43

[DEBUG] (s) skip = false

[DEBUG] (s) skipTests = false

[DEBUG] (s) testClassesDirectory = /Users/aaron/Programs/my_program/target/test-classes

[DEBUG] (s) testFailureIgnore = false

[DEBUG] (s) testNGArtifactName = org.testng:testng

[DEBUG] (s) testSourceDirectory = /Users/aaron/Programs/my_program/src/test/java

[DEBUG] (s) trimStackTrace = true

[DEBUG] (s) useFile = true

[DEBUG] (s) useManifestOnlyJar = true

[DEBUG] (s) workingDirectory = /Users/aaron/Programs/my_program

[DEBUG] – end configuration –

[INFO] Surefire report directory: /Users/aaron/Programs/my_program/target/surefire-reports

[DEBUG] Setting system property [user.dir]=[/Users/aaron/Programs/my_program]

[DEBUG] Setting system property [localRepository]=[/Users/aaron/.m2/repository]

[DEBUG] Setting system property [basedir]=[/Users/aaron/Programs/my_program]

[DEBUG] Using JVM: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java

[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository

[DEBUG] dummy:dummy:jar:1.0 (selected for null)

[DEBUG] org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile)

[DEBUG] org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile)

[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile

[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile

[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository

[DEBUG] dummy:dummy:jar:1.0 (selected for null)

[DEBUG] org.apache.maven.surefire:surefire-junit4:jar:2.7.1:test (selected for test)

[DEBUG] org.apache.maven.surefire:surefire-api:jar:2.7.1:test (selected for test)

[DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-junit4/2.7.1/surefire-junit4-2.7.1.jar Scope: test

[DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: test

[DEBUG] Test Classpath :

[DEBUG] /Users/aaron/Programs/my_program/target/test-classes

[DEBUG] /Users/aaron/Programs/my_program/target/classes

[DEBUG] /Users/aaron/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar

[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository

[DEBUG] dummy:dummy:jar:1.0 (selected for null)

[DEBUG] org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile)

[DEBUG] org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile)

[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile

[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile

Forking command line: /bin/sh -c cd /Users/aaron/Programs/my_program && /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -jar /Users/aaron/Programs/my_program/target/surefire/surefirebooter6118081963679415631.jar /Users/aaron/Programs/my_program/target/surefire/surefire4887918564882595612tmp /Users/aaron/Programs/my_program/target/surefire/surefire9012255138269731406tmp


回答:

There are no tests to run.

Results :

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

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 2.089s

[INFO] Finished at: Mon May 30 12:03:09 EDT 2011

[INFO] Final Memory: 7M/62M

[INFO] ------------------------------------------------------------------------

`

回答:

默认情况下,Maven在寻找要运行的测试时使用以下命名约定:

  • Test*
  • *Test
  • *TestCase

你的测试课程没有遵循这些约定。你应该重命名它或将Maven Surefire插件配置为对测试类使用其他模式。

以上是 Java Maven找不到要运行的JUnit测试 的全部内容, 来源链接: utcz.com/qa/432134.html

回到顶部