我需要针对各种参数测试方法的字符串输出。我的问题是它产生了相当大的输出,并且使用 java String 构造预期的输出变得相当乏味。
我想过将预期的输出外部化到一个文件中,但我遇到了诸如回车、空格差异等问题。
我想知道是否有另一种更实用的方法来比较 jUnit 中的两个大字符串。
谢谢
从文件中读取字符串而不破坏它是很有可能的(如何从文件的内容中创建 Java 字符串?)。如果您的测试未通过比较,根据定义,预期或实际结果是错误的:作为此测试的作者,您需要决定哪个。
您可以通过断言属性来避免文字比较:例如,测试它是否包含一些子字符串,或者预期的换行数。
一般来说,测试一个大字符串表明您正在尝试在一个测试中测试一个大型系统的行为。考虑将测试分解为更小的单元,以便可以单独验证组件。这也将使您更清楚地指出问题所在。
我能想到的一种方法是一个工厂类,它会产生你期望的字符串。
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();
可能有更有效的方法,但这是您可以使用的一种想法。