Переключение ActiveTestSuite на JUnit4 с аннотациями - PullRequest
2 голосов
/ 27 января 2012

Я создал несколько тестовых случаев и использую ActiveTestSuite для параллельного запуска методов, чтобы проверить некоторые потенциальные проблемы с многопоточностью. Затем я хотел поменять класс на JUnit4 с аннотацией, потому что мне нужно воспользоваться аннотациями @BeforeClass и @AfterClass. Моя проблема заключается в создании набора тестов. Ранее я сделал следующее

public static Test suite() {
       TestSuite suite = new ActiveTestSuite(
              MultithreadedTests.class.getName());
       // the parm is the method name!!!
       suite.addTest(new MultithreadedTests("testTransferToHostStockCountAndFinFile"));
       suite.addTest(new MultithreadedTests("testTransferToHostRTVAndFinFile"));
       suite.addTest(new MultithreadedTests("testTransferToHostTRFAndFinFile"));
       suite.addTest(new MultithreadedTests("testTransferToHostRCVAndFinFile"));
       suite.addTest(new MultithreadedTests("testTransferToHostCartonAndFinFile"));
       suite.addTest(new MultithreadedTests("testTransferToHostInvAdjustmentAndFinFile"));
       suite.addTest(new MultithreadedTests("testTransferToHostStoreOrderAndFinFile"));
       return suite;
}

Чтобы заставить работать части класса До / После, мой тестовый класс больше не расширяет TestCase, в противном случае эти методы не запускаются. Я могу собрать свой класс, выполнив что-то вроде этого:

package com.jda.portfolio.hostexport.server.exporthandler;

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

@RunWith(Suite.class)
@Suite.SuiteClasses({ com.jda.portfolio.hostexport.server.exporthandler.TestThreadedExportHandler.class  })
public class AllTests {} 

Но тесты получаются однопоточными, а это не то, чего я хочу. Мне нужно иметь возможность запускать каждый из методов testcase в отдельном потоке, но мне трудно понять, как использовать аннотации JUnit4 для создания набора, такого, чтобы это был ActiveTestSuite.

Чего мне не хватает?

1 Ответ

1 голос
/ 06 сентября 2012

ActiveTestSuite, кажется, все еще доступен как часть junit 4 в пакете "junit.extensions".

Есть также некоторые сторонние расширения, которые делают подобные вещи. Я успешно использовал вариант этих 3 классов в одном из моих проектов. Кроме того, обсуждение одновременных тестов JUnit с RunnerScheduler звучит как возможное решение.

...