Spring + JUnit で parameterized test

  • 1
    Like
  • 0
    Comment
More than 1 year has passed since last update.

参考サイト

http://stackoverflow.com/questions/28560734/how-to-run-junit-springjunit4classrunner-with-parametrized
https://github.com/junit-team/junit4/wiki/parameterized-tests

概要

  • RunWithにSpringJUnit4ClassRunner.classではなくParameterized.classを指定する
  • BeforeでTestContextManagerをsetupする
  • ParametersとParameterを書く

以上。

コード

@RunWith(Parameterized.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
public class SomeServiceTest {

    @Autowired
    SomeService service;

    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {
                { "hoge_", "xxx" },
                { "~~", "xxx" },
                { "af%", "xxx" },
                { "toooooooooooooooooooooooooooooooooooooooooooooooooooooolong", "xxx" }
        });
    }

    // <= data[n][0]
    @Parameter
    String fString;

    // <= data[n][1]
    @Parameter
    String fExp;

    private TestContextManager testContextManager;

    @Before
    public void setupContext() throws Exception {
        testContextManager = new TestContextManager(getClass());
        testContextManager.prepareTestInstance(this);
    }

    @Test
    public void testSome() {
        assertThat(service.doSome(fString), is(fExp));
    }
}