Android unit test not mocked

后端 未结 3 1282
我寻月下人不归
我寻月下人不归 2020-12-05 12:46

I followed this guide https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support but i am stuck with this error:

junit.framework.AssertionF         


        
相关标签:
3条回答
  • 2020-12-05 13:15

    JSON is bundled up with the Android SDK, so you'll just be hitting a stub. You can pull in a JSON jar, which will provide real objects to use.

    To do this, you'll need to add this to your build.gradle:

    testImplementation 'org.json:json:20140107'

    Alternatively, you can download and include the jar.

    testCompile files('libs/json.jar')
    

    Note that the latest version of JSON is built for Java 8, so you'll need to grab 20140107 You may also need to clean and rebuild the project.

    0 讨论(0)
  • 2020-12-05 13:31

    I think you trying to run tests with org.json.JSONObject which is part of Android Framework on pure jUnit.

    From docs:

    The android.jar file that is used to run unit tests does not contain any actual code - that is provided by the Android system image on real devices. Instead, all methods throw exceptions (by default).

    We are aware that the default behavior is problematic when using classes like Log or TextUtils and will evaluate possible solutions in future releases.

    You need to emulate Android environment you can use for this purpose Robolectric or InstrumentationTests

    0 讨论(0)
  • 2020-12-05 13:32
    android {
    
    
    testOptions {
        unitTests.returnDefaultValues = true
    } }
    
    dependencies {
    testImplementation libs.leakCanaryNoOp
    testImplementation tests.jUnit
    testImplementation tests.mockito
    testImplementation(tests.mokitoKotlin) {
        exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib"
        exclude group: "org.jetbrains.kotlin", module: "kotlin-runtime"
        exclude group: "org.jetbrains.kotlin", module: "kotlin-reflect"
        exclude group: "org.mockito", module: "mockito-core"
    }
    testImplementation tests.powerMock
    testImplementation tests.powerMockApiMockito
    testImplementation (tests.robolectric) {
        exclude group: 'org.robolectric', module: 'robolectric-resources:'
    }
    testImplementation (tests.robolectricShadowsSupport){
        exclude group: 'org.robolectric', module: 'robolectric'
    }
    kaptTest libs.daggerCompiler
    

    }

    0 讨论(0)
提交回复
热议问题