0

我有一个只包含一个主方法的类,该方法有一些我需要测试的 System.out.println 调用。我同意这个类的设计不是很好,但我必须保持原样。我不确定在 Mockito 中如何测试正在打印的正确值。我在 StackOverflow 上看到过类似问题的回答,但它们不同,因为对 System.out.println 的调用实际上是在测试中,而不是在被测试的类中。

public final class ConnectionPasswordEncryptor {

public static void main(String[] arg) {
    final String usage = "Generate encrypted password using PBEWithMD5AndDES algorithm, "
            + "only one argument is accepted, and it can't be empty.";

    if (arg.length == 1) {
        String pwd = StringUtils.trimToNull(arg[0]);
        if (pwd == null) {
            print(usage);
            return;
        }

        print(PasswordEncryptionUtil.encrypt(pwd));

    }
    else if ((arg.length == 2) && ("-d".equalsIgnoreCase(arg[0]))) {
        print(PasswordEncryptionUtil.decrypt(arg[1]));
    }
    else {
        print(usage);
    }
}

private static void print(final String msg) {
    System.out.println(msg);
}

private ConnectionPasswordEncryptor() {
    // prevent from initialization
}

}

例如,我想做的一项测试是测试如果发送了无效参数,是否打印了正确的消息: String[] arg = new String[] {"xx", "abcd1234"}; ConnectionPasswordEncryptor.main(arg); 该调用不返回任何内容,而是打印到标准输出。如何检索打印到标准输出的内容?

4

0 回答 0