JUnit и junit.framework.TestSuite - нет запускаемых методов

Я сделал несколько модульных тестов (в тестовом классе). В учебнике, который я прочитал, сказано, что я должен создать TestSuite для модульных тестов.

Странно то, что когда я запускаю модульный тест напрямую (выбирая тестовый класс - Run as jUnit test), все работает нормально, хотя когда я пытаюсь сделать то же самое с тестовым набором, всегда возникает исключение: java.lang. Исключение: нет исполняемых методов.

Вот код набора тестов:

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests {

public static Test suite() {
    TestSuite suite = new TestSuite("Test suite for com.xxx.yyyy.test");
    //$JUnit-BEGIN$
    suite.addTestSuite(TestCase.class);
    //$JUnit-END$
    return suite;
    }

}

Есть идеи, почему это не работает?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
0
17 493
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Конечно, это не сработает, поскольку вы не сообщаете комплекту тестов, какие у вас тестовые классы.

Но мне интересно, почему вы не используете «классический способ» для создания наборов тестов, который заключается в использовании Ant-задач jUnit.

Ответ принят как подходящий

У меня нет опыта работы с муравьями, поэтому я не использую его для тестирования прямо сейчас.

При поиске в Интернете мне кажется, что я путаю старое поведение jUnit 3.8 и jUnit 4.0. Пробуем сейчас использовать «новое поведение»

отредактировал:
теперь это работает:

AllTest изменен на:

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;


@RunWith(value=Suite.class)
@SuiteClasses(value = {TestCase.class})
public class AllTests {

}

TestCase изменен на:

import static org.junit.Assert.assertTrue;
import org.junit.Test;

public class TestCase  {
@Test
    public void test1 {
        assertTrue (tmp.getTermin().equals(soll));
    }
}

Привет, я делаю то же самое, но получаю ошибку no runnable methods

secret 29.02.2016 12:18

Мне тоже пришлось немного разобраться, но я думаю, что это решает вашу проблему:

Вы делаете suite.addTestSuite (TestCase.class), тогда как вы должны были сделать suite.addTest (TestCase.class).

Вы также можете добавить набор тестов в набор тестов, чтобы создать целую иерархию наборов тестов. В этом случае вам придется использовать suite.addTest (). Но обратите внимание, что затем вы используете .suite (), а не .class: suite.addTest (MyTestSuite.люкс ())!

Будьте осторожны при использовании автозавершения кода в среде IDE для добавления импорта для @Test. Например, это должен быть import org.junit.Test и нетimport org.testng.annotations.Test. Если вы по ошибке воспользуетесь вторым, то получите ошибку «Нет исполняемых методов». (Я использовал Intellij Idea 2017, который вместо этого импортировал org.junit.jupiter.api.Test!)

Другие вопросы по теме