多次重新运行一组JUnit测试

Pau*_*ams 2 java junit

我有一组测试测试一些与timzeone相关的功能

我有一个Before方法,它将默认时区设置为我选择的一个,以及一个after方法,它恢复测试前的默认值.

所以我基本上想做

将时区设置为UTC

运行测试

恢复时区

将时区设置为EST

运行测试

恢复时区

将时区设置为JST

运行测试

恢复时区

每种情况下的测试都是相同的.

是否有捷径可寻?

Kon*_*ski 5

是的,有一种很好的方法可以反复进行相同的测试,只需要一些其他的数据集.解决方案是"@RunWith(Parameterized.class)" - 链接到javadoc.我假设您正在使用JUnit 4 - 但TestNG也有我记忆中的功能.

您需要编写的代码看起来有点像这样:

 @RunWith(Parameterized.class)
 public class FibonacciTest {
        @Parameters
        public static Collection<Object[]> data() {
                return Arrays.asList(new Object[][] {
                                Fibonacci,
                                { { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },
                                                { 6, 8 } } });
        }

        private int fInput;

        private int fExpected;

        public FibonacciTest(int input, int expected) {
                fInput= input;
                fExpected= expected;
        }

        @Test
        public void test(@HeresHowYouGetValue Type value) {
                assertAnswerKey(new Object[][] {
                                Fibonacci,
                                { { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },
                                                { 6, 8 } } });
                assertEquals(fExpected, Fibonacci.compute(fInput));
        }
 }
Run Code Online (Sandbox Code Playgroud)