问题:
将我的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));
}
}
}
答案 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
中详细记录