我熟悉在JUnit中使用参数化测试,例如:
http://junit.org/apidocs/org/junit/runners/Parameterized.html
但我想知道是否有任何替代(可能更好)的方法来外部定义的测试数据。我真的不想在我的源文件中硬编码我的测试数据 - 我更喜欢用XML或某种其他结构化方式来定义它。
是否有一个特定的框架或框架扩展,为我提供了比标准JUnit方法更好的解决方案。您找到的最佳方法是什么?
编辑:我熟悉FIT框架并在这种情况下使用它,我希望尽可能避免这种情况。如果有一个JUnit扩展或类似框架提供比TestNG更好的解决方案,那么请告诉我。答案 0 :(得分:1)
答案 1 :(得分:1)
所以我找到了TestNG的方法,它允许你指定测试的参数,更多信息在这里:
http://testng.org/doc/documentation-main.html#parameters-testng-xml
这方面的一个例子是:
@Parameters({ "first-name" })
@Test
public void testSingleString(String firstName) {
System.out.println("Invoked testString " + firstName);
assert "Cedric".equals(firstName);
}
和
<suite name="My suite">
<parameter name="first-name" value="Cedric"/>
<test name="Simple example">
你也可以使用数据源(例如Apache Derby)来指定这个测试数据,我想知道这个解决方案有多灵活。
答案 2 :(得分:0)
在参数化测试示例中,我没有看到任何要求您将数据存储在类本身中的内容。使用从xml文件中提取数据并返回Object [] []并在示例中调用它们使用静态代码的方法。如果你想切换TestNG,他们当然已经为你编写了一个XML解析器。看起来JUnitExt对于JUnit 4也有一个,或者你可以自己写一个。