我有一个只包含一个主方法的类,该方法有一些我需要测试的 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); 该调用不返回任何内容,而是打印到标准输出。如何检索打印到标准输出的内容?