2016-12-16 10 views
0

私のアプリケーションの単体テストを書き始めていて、AndroidスタジオのMockito機能に問題があります。例えば、私はContextオブジェクトを模倣することはできません。ここに私の非常に基本的なコードは次のとおりです。Androidで動作しないMockitoテストフレームワーク

ExampleUnitTest.javaクラス:私は、このような依存関係を持っている私のアプリレベルbuild.gradleファイルで

package com.mypackage; 

import android.content.Context; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.Mock; 
import org.mockito.runners.MockitoJUnitRunner; 

import static org.mockito.ArgumentMatchers.any; 
import static org.mockito.Mockito.when; 

@RunWith(MockitoJUnitRunner.class) 
public class ExampleUnitTest { 

    @Mock Context context; 

    @Test 
    public void test() throws Exception { 
     when(context.getString(any(Integer.class))).thenReturn("Test"); 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.0.1' 
    compile 'com.android.support:design:25.0.1' 
    compile 'com.google.android.gms:play-services:10.0.1' 
    testCompile 'junit:junit:4.12' 
    testCompile 'org.mockito:mockito-core:2.1.0' 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
} 

そうに従ってすべてのチュートリアルなど、すべてがOKです。私は私のテストを実行しようとする。しかし、私はそのような例外を取得:

org.mockito.exceptions.misusing.UnnecessaryStubbingException: 
Unnecessary stubbings detected in test class: ExampleUnitTest 
Clean & maintainable test code requires zero unnecessary code. 
Following stubbings are unnecessary (click to navigate to relevant line of code): 
    1. -> at com.gapps.trailplanner.ExampleUnitTest.test(ExampleUnitTest.java:20) 
Please remove unnecessary stubbings. More info: javadoc for UnnecessaryStubbingException class. 

    at org.mockito.internal.exceptions.Reporter.formatUnncessaryStubbingException(Reporter.java:838) 
    at org.mockito.internal.junit.UnnecessaryStubbingsReporter.validateUnusedStubs(UnnecessaryStubbingsReporter.java:30) 
    at org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:45) 
    at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:104) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

私はシンプルContextオブジェクトgetString()メソッドの機能を模擬することができないことをここで間違ってやっていますか?

+0

例外トレースの上位6行はかなり明確です。 –

答えて

1

あなたが実際に偽物を使用していないためだと思います。テストクラスで検出

不要stubbings:ExampleUnitTest

クリーン&保守テストコードがゼロ不要なコードを必要とします。

関連する問題