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