我试图在我的代码上运行单元测试,并且一次测试失败,当我更深入时我注意到Base64.decode()
在测试环境中总是返回null。我的具体情况是:Base64解码在测试环境中返回null
的方法来测试
public String decode(String jwt){
System.out.println(jwt); //eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9
byte[] data = Base64.decode(jwt, Base64.DEFAULT);
return new String(data, "UTF-8"); //null pointer exception - data = null
}
测试本身:
@Test
public void validateBase64Decode() {
String stringToTest = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9";
String expectedResult = "{\"sub\": \"1234567890\", \"name\": \"John Doe\", \"admin\": true}";
Assert.assertEquals(Util.decode(stringToTest), expectedResult);
}
测试总是失败,因为空指针异常:
java.lang.NullPointerException
at java.lang.String.<init>(String.java:481)
因此我去进一步发现测试环境中的任何字符串都无法解码:
@Test
public void validateBase64Decode() {
Assert.assertNotNull(Base64.decode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9", 0));
} //Test NEVER passes - assertion error
请问,这里的任何大师?哪里不对 ?在此先感谢
当然,“anyString”不能被base64解码。因为它不是base64编码的。你应该给出一个更好的例子,失败。 – greenapps
举一个例子,你从你编码的数据开始。然后解码并与原始数据进行比较。 – greenapps
如果您想将其用于json Web令牌,则有一些库可以完成这项工作。 –