参数化测试的解决方案

时间:2009-05-27 04:30:37

标签: java unit-testing junit

我熟悉在JUnit中使用参数化测试,例如:

http://junit.org/apidocs/org/junit/runners/Parameterized.html

但我想知道是否有任何替代(可能更好)的方法来外部定义的测试数据。我真的不想在我的源文件中硬编码我的测试数据 - 我更喜欢用XML或某种其他结构化方式来定义它。

是否有一个特定的框架或框架扩展,为我提供了比标准JUnit方法更好的解决方案。您找到的最佳方法是什么?

编辑:我熟悉FIT框架并在这种情况下使用它,我希望尽可能避免这种情况。如果有一个JUnit扩展或类似框架提供比TestNG更好的解决方案,那么请告诉我。

3 个答案:

答案 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也有一个,或者你可以自己写一个。