参数化JUnit测试

时间:2017-06-08 10:30:20

标签: java exception intellij-idea junit parameterized

问题: 将我的initialization放入实际的@Parameters后我不再有NullPointerException,是否可能以前没有@Before实际调用过?! 有没有解决方案,所以我不必把它放到我的Paramters中?

解决方案:

@RunWith(value = Parameterized.class)
public class XQTest4Test {
    static XQueryTestHelper buildTest;
    static HeaderBodyPayloadTestcase[] arrayHdrInbPayTestcases;


    @Before
    public void initialize() throws Exception {
        buildTest = new XQueryTestHelper();
        buildTest.initialization();

        arrayHdrInbPayTestcases = buildTest.getHdrInbPayTestcases();
        System.out.println(arrayHdrInbPayTestcases[0].a);
    }

        @Parameter
        public HeaderBodyPayloadTestcase testcase;

        @Parameters(name = "{index}: pew")
        public static Iterable<? extends HeaderBodyPayloadTestcase> data() throws Exception {
            buildTest = new XQueryTestHelper();
            buildTest.initialization();

            arrayHdrInbPayTestcases = buildTest.getHdrInbPayTestcases();
            return Arrays.asList(arrayHdrInbPayTestcases);
        }




    @Test
    public void someTest() throws Exception{
    //  System.out.println(xq.toString());
        System.out.println(testcase.a);
        if(testcase.c.contains("HDR")){
            assertTrue(new XQueryTester(testcase.a,testcase.b).testHeader(testcase.c,testcase.d));
        }
        else if (testcase.c.contains("PAY")){
            assertTrue(new XQueryTester(testcase.a,testcase.b).testBody(testcase.c,testcase.d));

        }
        else {
            assertTrue(new XQueryTester(testcase.a,testcase.b).testInbound(testcase.c,testcase.d));
        }
    }

}

1 个答案:

答案 0 :(得分:0)

我认为beforeSend:function(xhr){ xhr.setRequestHeader("X-CSRFToken", $.cookie('csrftoken')); }, 注释可以帮到你。这样,您就不需要带参数的构造函数。

@Parameter

确保标记为@RunWith(Parameterized.class) public class XQTest4Test { static XQueryTestHelper buildTest; static HeaderBodyPayloadTestcase[] arrayHdrInbPayTestcases; @Parameter public HeaderBodyPayloadTestcase testcase; @Parameters(name = "{index}: pew") public static Iterable<Object[]> data() { return Arrays.asList(new HeaderBodyPayloadTestcase[][]{arrayHdrInbPayTestcases}); } // ... } 的字段的访问修饰符为@Parameter

我建议您使用public@Before方法进行所有初始化。取决于你的逻辑。

此功能已在JUnit4 wiki

中详细记录