如何让这样的测试用例更具可读性?
{% if fotosList|length > 4 %}
{% endif %}
我是否需要在String中手动设置换行符,
@Test
public void test1() throws Exception {
assertEquals("{\"Root\":{\"Name\":\"Paul\",\"Age\":\"10\",\"Enabled\":\"true\"}}",
transformer.transformXmlToJson("<Root><Name>Paul</Name><Age>10</Age><Enabled>true</Enabled></Root>"));
}
但是当我在eclipse中格式化这个类时,整个格式都需要折腾。
在编写这些测试用例时,我们应该遵循一个好的做法,使其更具可读性吗?
同样,有没有办法以更好的格式编写JSON?
答案 0 :(得分:1)
我个人会做的是从资源文件加载XML或JSON数据。类似的东西:
src
+-- test
+-- java
| +-- mypackage
| +-- MyTestClass.java
\-- resources
+-- mypackage
+-- test1_input.xml
+-- test1_expected_output.json
测试类(使用commons-io,但任何IO库或您自己的代码都可以):
package mypackage;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
public class MyTestClass {
@Test
public void test1() throws IOException {
final String xmlInput = IOUtils
.toString(getClass().getResourceAsStream("test1_input.xml"));
final String expectedJsonOutput = IOUtils
.toString(getClass().getResourceAsStream("test1_expected_output.json"));
// Do the test
}
}
当然,测试代码很容易应用于一堆具有不同输入的测试用例。
你是否觉得这个可读性方面的好主意可能主要是品味问题。
另一个方面是你比较JSON(或XML)字符串的方式:如果JSON的格式不同(字段之间有额外的空格或换行符......),你真的希望断言失败吗?如果没有,您应该考虑使用库来比较JSON(或XML)数据的实际结构,例如:
答案 1 :(得分:0)
如果只是关于格式化,你可以看到here如何禁用类/方法中某些部分的格式化程序(我偶尔会在我的代码中执行此操作)。
但除此之外,你可以考虑使用 assertThat 并为这种比较编写自定义匹配器。
更正:我强烈建议在任何情况下都使用断言;独立于问题是否有意义创建自定义匹配器。
答案 2 :(得分:0)
我认为最好的方法是:
equals()
和hashCode()
。