Как создать TestSuite с параметризованными весенними тестами Junit - PullRequest
1 голос
/ 09 сентября 2011

Я пытаюсь связать свои тесты в TestSuite, который будет брать файлы из каталога и запускать каждый из них после загрузки весеннего контекста.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/META-INF/spring/context-test.xml"})
public class MyTestCase extends TestCase{

    private String fileName;

    public MyTestCase(String fileName){
        this.fileName = fileName;
    }

    @Resource private Processor processor;

    @Before
public void setup(){
    ...
    }

    @Test
    public void test(){
    Read file and run test..
    ...
    }

}

Если я это сделаю, он не распознает весенние аннотации

public class MyTestSuite extends TestCase{

    public static Test suite(){
        TestSuite suite = new TestSuite();
        suite.addTest(new MyTestCase("file1"));
        suite.addTest(new MyTestCase("file2"));
        return suite;
    }
}

Я посмотрел и нашел: Spring 3+ Как создать TestSuite, когда JUnit не распознает его , что говорит о том, что я должен использовать JUnit4TestAdapter. Проблема с JUnitTestAdapter заключается в том, что он не позволяет мне передавать параметры, а также не принимает MyTestSuite.suite (). Я могу сделать только что-то вроде:

public class MyTestSuite{

    public static Test suite(){

        return new JUnit4TestAdapter(MyTestCase.class);
    }
}

Ваш ответ высоко ценится.

Спасибо

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Мне пришлось использовать устаревшие AbstractSingleSpringContextTests для достижения этой цели. AbstractSingleSpringContextTests относится к тем временам, когда инфраструктура TestContext была недоступна.

public class MyTestCase extends AbstractSingleSpringContextTests {

    private String fileName;

    public MyTestCase(String fileName){
        this.fileName = fileName;
    }

    @Resource private Processor processor;

    @Override
    protected void onSetUp(){

         initialization code...

    }

    @Override
    protected String getConfigPath(){
         return "config/File/Path";
    }

    @Test
    public void test(){
    Read file and run test..
    ...
    }

}


public class MyTestSuite extends TestCase{

    public static Test suite(){
        TestSuite suite = new TestSuite();
        suite.addTest(new MyTestCase("file1"));
        suite.addTest(new MyTestCase("file2"));
        return suite;
    }
}

Это не лучшее решение, но оно работает. Пожалуйста, напишите, если у вас есть идея получше.

0 голосов
/ 05 января 2012

Недавно найдено это решение.На мой взгляд, немного лучше, поскольку он не полагается на устаревший код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...