当前位置 : 主页 > 网页制作 > xml >

使资源xml可配置,同时在java中进行测试?

来源:互联网 收集:自由互联 发布时间:2021-06-13
我必须测试100多个不同的情况,每一个我都需要外部xml来读取和解析. 我用: String xml = IOUtils.toString( this.getClass().getResourceAsStream(path),encoding); 例如我的测试xml: container xmlns:dmc="http://exa
我必须测试100多个不同的情况,每一个我都需要外部xml来读取和解析.
我用:

String xml = IOUtils.toString(
                this.getClass().getResourceAsStream(path),encoding);

例如我的测试xml:

<container xmlns:dmc="http://example.com/common">
    <object id="1369" checkedParamter="in" class="Class1">
...

</object>
</container>

但我必须测试带有缺少id的ivalid id和现有id.然后我需要checkedParamter有3-4个值并将所有组合与id属性组合.对于每个测试,我现在创建新的xml,唯一的区别是这两个属性id和checkedParamter.
我想知道是否有简单的方法来读取xml并使用相同的结构,但是从我的测试中传递这些值.

<container xmlns:dmc=" http://example.com/common">
        <object id= ${valueId} checkedParamter=${valueChechedParamter} class="Class1">
    ...

    </object>
    </container>

然后我将使用一个xml并将期望值放在测试开始时.我不是技术或方法吗?

最好的方法是使用${valueId}的单独文件,就像你已经拥有的那样.

我们将使用JUnit的以下功能来实现我们的目标:

> Parameterized tests – 用于输入数据的简单列表

我们将以下文件存储到项目的资源部分:

<container xmlns:dmc=" http://example.com/common">
    <object id= ${valueId} checkedParamter=${valueChechedParamter} class="Class1">
        ...
    </object>
</container>

然后我们开始测试:

@RunWith(Parameterized.class)
public class XmlInputTest {

@Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {
                 { 1369, "in" }, 
                 { 1369, "out" }, 
                 { 753, "in" }, 
                 // etc.... 
           });
    }



@Parameter(value = 0)
public int id;

@Parameter(value = 1)
public String checkedParamter;

@Test
public void mainTest() {
    String xml = IOUtils.toString(
         this.getClass().getResourceAsStream("template.xml"),encoding);
    xml = xml.replace("${valueId}",String.valueOf(id)).replace("${valueChechedParamter}",checkedParamter);

    // remaing test....
}
}

使用这种测试运行方法的优点是您有一个简单的输入列表供测试.

网友评论