Android Base64在單元測試中編碼和解碼返回null

[英]Android Base64 encode and decode return null in Unit Test

I am attempting to decode a Base64 encoded string in Android using the class.


Both the encodeToString and decode methods are returning null, and I have no idea what's wrong, here's my code for the decode:


// Should decode to "GRC"
String friendlyNameBase64Encoded = "R1JD";

// This returns null
byte[] friendlyNameByteArray = Base64.decode(friendlyNameBase64Encoded, Base64.DEFAULT);

// Fails with NullPointerException
String friendlyName = new String(friendlyNameByteArray, "UTF-8");

I'm running Android API 23.1.0

我運行的是Android API 23.1.0

3 个解决方案



I had the same problem in my unit tests. I didn't realize the Base64 class I'm using is a part of the Android API, therefore

我在單元測試中也遇到了同樣的問題。因此,我沒有意識到我使用的Base64類是Android API的一部分

You can't use android.util.Base64 in a regular JUnit test, it must be an Instrumentation test.


However, if you really want it as a unit test, you could use the Apache Commons Base64 class instead. Include it in Gradle build:

但是,如果您真的希望它作為單元測試,您可以使用Apache Commons Base64類。將其包含在Gradle構建中:

compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.1'

And then slightly different usage,




Follow up o android tutorials and unit test notes while you need just Unit tests without use of some android libs

跟進o android教程和單元測試說明,當你只需要單元測試而不使用android libs時

In your case you're depending on android.Base64. I had similar issue and moving test classes from src/test -> src/androidTest worked. Those tests are run on virtual machine or real android device. I didn't notice the diff at the first look.

在你的情況下,你取決於android.Base64。我有類似的問題和移動測試類從src/test -> src/androidTest工作。這些測試在虛擬機或真正的android設備上運行。我一眼就沒注意到有什么差異。



You can use the Robolectric Runner

您可以使用robectric Runner

  1. Add the dependency in your build.gradle:


    testCompile 'org.robolectric:robolectric:X.X.X'
  2. Add this line in your testing class:


    import org.junit.runner.RunWith;
    import org.robolectric.RobolectricTestRunner;
    public class MyTestingClassTest {



粤ICP备14056181号  © 2014-2021