Junit: тестов не найдено
Я унаследовал проект Java, и я новичок в разработке Java. Я чувствую, что для меня удобно освоить код - написать несколько тестов. Я пишу свой код, используя IntelliJ.
Мой существующий проект имеет такую структуру папок:
/myProject
/src
/main
/java
/com.lexcorp
/core
/email
/providers
emailProvider.java
Я создал новый проект, который будет проводить тесты для этого проекта. Я бы хотел, чтобы этот проект проводил как модульные, так и интеграционные тесты. В настоящее время мой новый проект имеет такую структуру:
/myProjectTests
/src
/main
/java
/com.lexcorp.core.email.providers
emailProviderTest.java
Файл emailProviderTest.java выглядит следующим образом:
package com.lexcorp.core.email.providers;
import junit.framework.TestCase;
import org.junit.Test;
public class EmailProviderTest extends TestCase {
private final String username = "[testAccount]";
private final String password = "[testPassword]";
@Test
public void thisAlwaysPasses() {
assertTrue(true);
}
}
Этот проект имеет конфигурацию Run/Debug со следующими свойствами:
- Тип теста: все в упаковке
- Поиск тестов: во всем проекте
Когда я запускаю эту конфигурацию, я получаю сообщение об ошибке:
junit.framework.AssertionFailedError: No tests found in com.lexcorp.core.email.providers.EmailProviderTest
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
at org.junit.runners.Suite.runChild(Suite.java:127)
at org.junit.runners.Suite.runChild(Suite.java:26)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Я не понимаю, почему я получаю сообщение об ошибке: "Тесты не найдены". В то время как структура моего проекта отличается, структура папок в ОС совпадает (что меня смущает). Почему я получаю эту ошибку и как ее исправить?
Ответы
Ответ 1
Я тоже получал ошибку
junit.framework.AssertionFailedError: тестов не найдено...
Но я забыл указать
defaultConfig {
...
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
После проектов синхронизации он обнаружил тесты. Так что, возможно, это помогает кому-то еще
Ответ 2
Расширение junit.framework.TestCase
- это старый подход JUnit 3 для реализации тестовых примеров, который не работает, поскольку никакие методы не начинаются с теста букв. Поскольку вы используете JUnit 4, просто объявите класс как
public class EmailProviderTest {
и метод тестирования будет найден из аннотации @Test
.
Читайте: JUnit confusion: используйте 'extend Testcase' или '@Test'?
Ответ 3
Я тоже получал это:
junit.framework.AssertionFailedError: тестов не найдено...
Решено путем переименования метода тестирования из метода1
@Test
public void method1(){
// Do some stuff...
}
до testMethod1
@Test
public void testMethod1(){
// Do some stuff...
}
Ответ 4
если вы используете jUnit 4, тогда не используйте extends TestCase, удалив эту исправленную ошибку.
Ответ 5
У меня была та же проблема, в Intellij IDEA, для платформы Java.
Я все делал правильно:
- класс, унаследованный от TestCase
- Я импортировал junit.framework.TestCase
- Я добавил украшение @Test
Но я сделал одну ошибку: название метода не начиналось с "test", фактически было:
@Test
public void getSomethingTest(){
и когда я изменил его на:
@Test
public void testGetSomethingTest(){
Я решил: исполнитель наконец смог распознать этот метод в качестве тестового.
Я ничего не изменил.
Ответ 6
У меня было это при использовании поставщика данных, и у одного из параметров был новый символ строки, например:
@DataProvider
public static Object[][] invalidAdjustment() {
return new Object[][]{
{"some \n text", false},
};
}
Удаление \n
решило проблему
Ответ 7
В моем случае мне понадобился junit4-version.jar
в пути к классам Junit задачи, а также:
ant-version.jar
ant-junit-version.jar
ant-junit4-version.jar
в библиотеке моей установки муравья (/usr/share/ant/lib
).
Я получаю сообщение об ошибке "junit.framework.AssertionFailedError: тесты не найдены в...", хотя у меня не было ant-junit4-*version*.jar
в нужном месте.
Я исправил это, установив необязательный пакет debian/ubuntu:
apt-get install ant-optional
Ответ 8
Я беспокоился об этом, и ни один из ответов не помог мне, пока я не переместил исходный файл теста из этой папки:
src/test/java/com/junit/test
до этой папки:
src/test/java/com/junit
Ответ 9
Другая причина, как правило, я вижу людей, имеющих параметры метода, удалять любые параметры, которые могут быть у вас в методе тестирования, независимо от того, добавляете ли вы аннотацию @Test, вам нужно, чтобы ваше имя метода начиналось с "теста", чтобы Junit выбрал вас прецедент.
надеюсь, что это поможет.
Ответ 10
Имя тестового метода public void test Имя() {}
Где имя() в методах имен имен источников.