jUnit:外部化期望的字符串输出



我需要为各种参数测试方法的字符串输出。我的问题是,它产生了相当大的输出,并且使用javaString构建期望的输出变得相当乏味。

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

我想知道是否还有另一种更实用的方法来比较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();也许有更有效的方法可以做到这一点,但这是一个你可以使用的想法。

最新更新