我熟悉JUnit中参数化测试的用法,例如:
http://junit.org/apidocs/org/junit/runners/Parameterized.html
但我想知道对于外部定义的测试数据是否有任何替代的(可能更好的)方法。我真的不想在我的源文件中硬编码我的测试数据-我更喜欢用XML或其他结构化方式定义它。
有没有一个特定的框架,或者对框架的扩展,可以为我提供比标准JUnit方法更好的解决方案。你发现的解决这个问题的最佳方法是什么?
编辑:我熟悉FIT框架,并在这种情况下使用它,如果可能的话,我想避免这种情况。如果有比TestNG更好的解决方案的JUnit扩展或类似的框架,请让我知道。
发布于 2009-05-27 06:01:19
所以我发现了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)来指定此测试数据,不过我想知道这是一种灵活的解决方案。
发布于 2009-05-27 04:33:31
为此,您可以尝试使用Dependency Injection or Inversion of Control。Spring Framework可以做到这一点。
发布于 2009-06-02 15:47:13
我在参数化测试示例中没有看到任何需要将数据存储在类本身中的内容。使用从xml文件中提取数据并返回Object并调用的方法,在示例中使用静态代码。当然,如果您想切换TestNG,他们已经为您编写了XML解析器。看起来JUnitExt也为JUnit 4准备了一个,或者你也可以自己写一个。
https://stackoverflow.com/questions/913928
复制相似问题