我試圖在我的代碼上運行單元測試,並且一次測試失敗,當我更深入時我注意到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令牌,則有一些庫可以完成這項工作。 –