2008-10-10 1 views
5

Я провел несколько модульных тестов (в тестовом классе). Учебник, который я прочитал, сказал, что я должен сделать TestSuite для unittests.JUnit и junit.framework.TestSuite - Никакие управляемые методы

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

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

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; 
    } 

} 

Любые идеи, почему это не работает?

ответ

5

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

Поиск в Интернете кажется, что я смешиваю старые 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)); 
    } 
} 
+0

Привет, Я делаю то же самое, но я получаю ошибку `no runnable methods` – secret 2016-02-29 09:18:58

0

Конечно, это не сработает, так как вы не рассказываете о наборе тестов, какие ваши тестовые классы.

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

2

Взял меня немного, чтобы понять это, но я думаю, что это решает вашу проблему:

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

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

0

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

Смежные вопросы