jUnit:外化预期的字符串输出

时间:2013-07-29 09:04:18

标签: java junit

我需要测试各种参数的方法的字符串输出。我的问题是它产生了相当大的输出,使用java String构造预期的输出变得相当繁琐。

我想过将预期的输出外部化到一个文件中,但我遇到的问题包括回车,空格差异等。

我想知道是否还有另一种更实用的方法来比较jUnit中的两个大字符串。

谢谢

2 个答案:

答案 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(); 可能有更有效的方法,但这是你可以使用的一个想法。