2009-05-27 103 views
1

我熟悉JUnit中使用的参数测试,e.g:解决方案参数测试

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

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

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

编辑:我熟悉FIT框架和它在这种情况下的使用,我想避免,如果可能的话。如果有一个JUnit扩展或类似框架提供了比TestNG更好的解决方案,那么请让我知道。

回答

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)来指定这个测试数据,我想知道这是多么灵活的解决方案。

0

在参数化测试示例中,我没有看到任何需要您将数据存储在类本身中的东西。使用从xml文件中提取数据并返回Object [] []的方法,并调用它在示例中使用静态代码的位置。如果你想切换TestNG,当然,他们已经为你编写了一个XML解析器。它看起来像JUnitExt也有一个JUnit 4,或者你可以写一个你自己的。