我需要测试各种参数的方法的字符串输出。我的问题是它产生了相当大的输出,使用java String构造预期的输出变得相当繁琐。
我想过将预期的输出外部化到一个文件中,但我遇到的问题包括回车,空格差异等。
我想知道是否还有另一种更实用的方法来比较jUnit中的两个大字符串。
谢谢
答案 0 :(得分:1)
从文件中读取字符串而不会破坏它(How do I create a Java string from the contents of a file?)。如果您的测试未通过比较,根据定义,预期或实际结果是错误的:作为此测试的作者,您将需要决定哪个。
您可以通过声明属性来避免文字比较:例如,测试它包含一些子字符串,或者预期的换行符数。
通常,测试大字符串表示您尝试在一次测试中测试大型系统的行为。考虑将测试分解为更小的单元,因此可以单独验证组件。这也可以让您更清楚地了解问题所在。
答案 1 :(得分:0)
我能想到的一种方法是工厂类,它会产生你期望的字符串。
public class MyBigStringProducer {
public static expectedAsOutputForXXXMethod () {
// instead of a text file, this is
// where your big String would be
return "my big string";
}
}
在您的测试班中,MyBigStringProducer.expectedAsOutputForXXXMethod();
可能有更有效的方法,但这是你可以使用的一个想法。