如何解决使用@Theory对不同数据XML文件进行JUnit测试
当使用多个数据文件时,我很难找到在JUnit测试中使用@Theory的解决方案。 我正在尝试使用2个XML文件作为测试的输入,所以我需要以下内容:
public class XmlParserTest
{
@DataPoint
public static Document document;
@DataPoint
public static Document nsDocument;
@Before
public void before() throws Exception
{
InputStream is = getClass().getResourceAsStream("xmlTest.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
XmlParserTest.document = builder.parse(is);
XmlParserTest.document.getDocumentElement().normalize();
is.close();
is = getClass().getResourceAsStream("xmlNSTest.xml");
XmlParserTest.nsDocument = builder.parse(is);
XmlParserTest.nsDocument.getDocumentElement().normalize();
}
@Theory
public void testGetAttribute(Document doc) throws Exception
{
NodeList ln = doc.getElementsByTagNameNS("*","Event");
...
}
}
因此,基本上,我想对两个已加载的XML文件运行该测试。
我得到异常:java.lang.Exception: No runnable methods
我已经看过参数化字段,并看到了@Theory带有静态设置字段的简单示例,但是我真的无法弄清楚如何加载和使用文件。
任何见识都会很棒。
解决方法
理论需要特殊的跑酷者(请参见documentation):
@RunWith(Theories.class)
public class XmlParserTest {
....
}
否则,JUnit尝试将类作为“常规”单元测试运行,因此它将查找带有@Test
注释的方法。显然,没有这样的方法,因此是例外。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。