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

标签 java xml testing junit apache-commons-io

我必须测试 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、缺少 ID 和现有 ID 进行测试。然后我需要 checkedParamter 有 3-4 个值,并将所有组合与 id 属性结合起来。对于现在的每个测试,我都会创建新的 xml,唯一的区别是这两个属性 idcheckedParamter。 我想知道是否有简单的方法来读取 xml 并使用相同的结构,但从我的测试中传递这些值。

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

    </object>
    </container>

然后我将使用一个 xml 并将期望值放在测试的开头。我没有技术或方法吗?

最佳答案

最好的方法是使用 ${valueId} 创建一个单独的文件,就像您已经拥有的那样。

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

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

<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....
}
}

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

关于java - 使资源 xml 可配置,同时在 java 中进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35127124/

相关文章:

java - 服务java中的模拟资源(mockito)

java - 删除应用程序不同 session 之间的插件首选项

php - 获取 XML 元素文本,跳过某些元素,将其转换为单个字符串

我的 SQL 查询中需要用 HTML 代码来格式化带有千位分隔符的表号,并使总计列值以粗体显示

ruby-on-rails - 持续集成建议?

java - JUNG 中的顶点/节点显示在窗口之外

Java,通用启用对象列表的隐式和显式类型转换

python - 为什么我们必须创建一个新组来对 Odoo v8 中的所有用户隐藏菜单项?

testing - 如何使用 JMeter 确定我的 Web 应用程序的断点?

testing - 我应该使用基于协议(protocol)的 stub 服务还是 Wiremock.net?