Maven не находит тесты JUnit для запуска

У меня есть программа maven, она отлично компилируется. Когда я запускаю mvn test он не запускает никаких тестов (в заголовке TEST говорится There are no tests to run. ).

Я воссоздал эту проблему с помощью супер простой настройки, которую я буду включать ниже, а также вывода при запуске с -X .

Тестирование модhive выполняется отлично от eclipse (оба с его пакетом junit по умолчанию, и когда я вместо этого включаю junit.jar, загруженный maven). Также mvn test-compile правильно создает class под тестовыми classами. Я запускаю это на OSX 10.6.7 с Maven 3.0.2 и java 1.6.0_24.

Вот структура каталогов:

 /my_program/pom.xml /my_program/src/main/java/ClassUnderTest.java /my_program/src/test/java/ClassUnderTestTests.java 

pom.xml:

   4.0.0 my_group my_program jar 1.0-SNAPSHOT My Program   junit junit 4.8.1 test      org.apache.maven.plugins maven-compiler-plugin  1.5 1.5      

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 ------------------------------------------------------- TESTS ------------------------------------------------------- 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] ------------------------------------------------------------------------ 

17 Solutions collect form web for “Maven не находит тесты JUnit для запуска”

По умолчанию Maven использует следующие соглашения об именах при поиске тестов:

  • Test*
  • *Test
  • *TestCase

Ваш тестовый class не соответствует этим соглашениям. Вы должны переименовать его или настроить Maven Surefire Plugin для использования другого шаблона для тестовых classов.

Я также обнаружил, что единичный тестовый код должен помещаться под тестовую папку, он не может быть признан тестовым classом, если вы поместите его в основную папку. например.

Неправильно

 /my_program/src/main/java/NotTest.java 

Правильно

 /my_program/src/test/java/MyTest.java 

Еще одна вещь, которая может заставить Maven не найти тесты, если упаковка упаковки не будет объявлена ​​правильно.

В недавнем случае у кого-то была pom и мои тесты никогда не запускались. Я изменил его на jar и теперь он отлично работает.

Кроме того, проверьте, соответствует ли ваш каталог тестовых classов (например, src / test / java) директории, указанной в свойстве в вашем pom.xml в свойстве . Понадобился время, чтобы найти это.

При использовании JUnit 5 я столкнулся с той же проблемой. Maven Surefire нуждается в плагине для запуска тестов JUnit 5. Добавьте это в наш pom.xml :

  org.apache.maven.plugins maven-surefire-plugin 2.21.0   org.junit.platform junit-platform-surefire-provider 1.2.0-M1   org.junit.jupiter junit-jupiter-engine 5.2.0-M1    

Источник: https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven

Убедитесь, что (для jUnit – 4.12 и Eclipse surefire plugin)

  1. Добавьте требуемую версию jUnit в POM.xml в зависимости. Сделайте Maven -> Обновить проект, чтобы увидеть необходимые банки, экспортированные в проект.
  2. Класс тестирования находится под папкой src / test / java и подкаталогами этой папки (или базовая папка может быть указана в POM в config testSourceDirectory). Название classа должно иметь хвостовое слово «Test».
  3. Метод теста в classе теста должен содержать аннотацию @Test

Обнаруженный, если вы префикс теста с помощью «Абстрактного», он по умолчанию будет проигнорирован.

Maven не будет запускать ваши тесты, если проект имеет pom

Вам необходимо установить упаковку в банку (или какой-либо другой тип артефакта java) для запуска тестов: jar

Если у вас есть общее приложение Java / Groovy, и все, что у вас есть, модульные тесты Groovy, Maven не найдет никаких тестов. Это можно устранить, добавив один единичный тест в src / test / java.

У меня также была аналогичная проблема, после изучения выяснилось, что зависимость testng вызывает эту проблему. После удаления зависимости testng от pom (как мне больше не нужно), он начал работать отлично для меня.

   org.testng testng 6.8 test  

Еще одна причина не запускать тестовые случаи со мной – у меня было свойство «тест» для совершенно разных целей, но оно помешало плагину верного пламени. Таким образом, проверьте свои POM для:

  ....  ...  

и удалите его.

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

должно быть

 /my_program/src/test/java/ClassUnderTestTest.java 

Maven находит те окончания тестирования или запускает тест для автоматического запуска.

Однако вы можете использовать

 mvn surefire:test -Dtest=ClassUnderTestTests.java 

для запуска ваших тестов.

Еще один совет (в дополнение к предыдущим ответам):

В Eclipse откройте «Свойства проекта»> « Run/Debug Settings :

«Эта страница позволяет вам управлять конфигурациями запуска с выбранным в данный момент ресурсом»

Там вы можете добавить (Новый …) или удалить (Удалить) любые тесты JU (JUnit), которые у вас есть в вашем проекте (в папке src/test/java или в курсе).

junitArtifactName может также иметь место, если используемый JUnit не является стандартным ( junit:junit ), но, например, …

  org.eclipse.orbit org.junit 4.11.0 bundle test  

В случае, если кто-то искал, и я его не решаю, у меня была библиотека для разных тестов:

  org.junit.jupiter junit-jupiter-api ${org.junit.jupiter.version} test  

Когда я установил junit, все сработало, надеюсь и помогло:

  junit junit 4.11 test  

Если ваше имя тестового classа не соответствует стандартным соглашениям об именах (как указано выше в @axtavt выше), вам нужно добавить имя шаблона / classа в pom.xml , чтобы Maven выбрал тест –

 ...    org.apache.maven.plugins maven-surefire-plugin   **/*_UT.java      ... в ...    org.apache.maven.plugins maven-surefire-plugin   **/*_UT.java      ... 

Вот точный код, который я должен был добавить в мой pom.xml:

     org.apache.maven.plugins maven-surefire-plugin 2.21.0   org.junit.platform junit-platform-surefire-provider 1.2.0-M1   org.junit.jupiter junit-jupiter-engine 5.2.0      

И вот мои зависимости:

    org.junit.jupiter junit-jupiter-api 5.2.0 test   org.easytesting fest-assert-core 2.0M10 test   org.junit.platform junit-platform-surefire-provider 1.2.0-M1   org.junit.jupiter junit-jupiter-engine 5.2.0-M1   
  • Готово ли Maven для JDK9?
  • Как сделать файл войны в Eclipse
  • Maven: жизненный цикл против фазы против плагина против цели
  • Почему Maven загружает maven-metadata.xml каждый раз?
  • Не удалось выполнить цель org.apache.maven.plugins: maven-compiler-plugin: 2.3.2: компиляция (компиляция по умолчанию)
  • Давайте будем гением компьютера.