2015-06-22 82 views
1

不能使我的Espresso UI測試工作。問題在哪裏?
我應該爲這個簡單的應用程序考慮它的工作結果?Android Espresso:測試運行失敗。沒有測試結果空的測試套件。爲什麼?

我有「android.support.test.runner.AndroidJUnitRunner」用於儀表亞軍Edit Confirurations

從AndroidManifest.xml中:

<instrumentation 
android:name="android.support.test.runner.AndroidJUnitRunner" 
android:targetPackage="my.package"/> 

從的build.gradle:

defaultConfig { 
    applicationId "my.package" 
    minSdkVersion 18 
    targetSdkVersion 22 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
} 

packagingOptions { 
    exclude 'LICENSE.txt'} 

repositories { jcenter()} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:appcompat-v7:22.2.0' 
compile 'com.android.support:support-annotations:22.2.0' 
androidTestCompile 'com.android.support.test:runner:0.3' 
androidTestCompile 'com.android.support.test:rules:0.3' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2' 
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1' 
testCompile 'junit:junit:4.12'} 

MainActivity.java

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final EditText editText = (EditText)findViewById(R.id.edit_text); 
     Button button = (Button) findViewById(R.id.confirm); 
     final TextView textView = (TextView)findViewById(R.id.you_entered); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       textView.setText("You entered: " + editText.getText()); 
      } 
     }); 
    } 
} 

ApplicationTest.java

public class ApplicationTest extends ApplicationTestCase<Application> { 
    public ApplicationTest() { 
     super(Application.class); 
    } 
} 

MainActivityTest

public class MainActivityTest extends ActivityInstrumentationTestCase2 <MainActivity> { 

    Activity activity; 
    public MainActivityTest() { 
     super(MainActivity.class); 
    } 

    @Override 
    public void setUp() throws Exception { 
     super.setUp(); 
     activity = getActivity(); 
    } 

    @SmallTest 
    public void testInputOutput() { 
     Espresso.onView(ViewMatchers.withId(R.id.edit_text)).perform(ViewActions.click()) 
       .perform(ViewActions.typeText("Espresso")); 
     Espresso.onView(ViewMatchers.withId(R.id.confirm)).perform(ViewActions.click()); 
     Espresso.onView(ViewMatchers.withId(R.id.you_entered)).check(ViewAssertions.matches 
       (ViewMatchers.withText("Espresso"))); 
     assertEquals(((TextView)ViewMatchers.withId(R.id.you_entered)).getText(), "Espresso"); 
    } 
} 

正在運行的所有測試的結果:

Testing started at 12:36 ... 
Installing my.package 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/my.package" 
pkg: /data/local/tmp/my.package 
Success 

Uploading file 
    local path: /home/jane_doe/project/android/MyTestApp/app/build/outputs/apk/app-debug-androidTest-unaligned.apk 
    remote path: /data/local/tmp/my.package.test 
Installing my.package.test 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/my.package.test" 
pkg: /data/local/tmp/my.package.test 
Success 

Running tests 
Test running startedTest running failed: No test results 
Empty test suite. 

運行MainActivityTest的結果只有:

Testing started at 12:39 ... 
12:39:39: Executing external tasks 'cleanTest test --tests cosysoft.cupofcoffee.MainActivityTest'... 
:app:cleanTest UP-TO-DATE 
:app:preBuild UP-TO-DATE 
:app:preDebugBuild UP-TO-DATE 
:app:checkDebugManifest 
:app:preReleaseBuild UP-TO-DATE 
:app:prepareComAndroidSupportAppcompatV72220Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42220Library UP-TO-DATE 
:app:prepareDebugDependencies 
:app:compileDebugAidl UP-TO-DATE 
:app:compileDebugRenderscript UP-TO-DATE 
:app:generateDebugBuildConfig UP-TO-DATE 
:app:generateDebugAssets UP-TO-DATE 
:app:mergeDebugAssets UP-TO-DATE 
:app:generateDebugResValues UP-TO-DATE 
:app:generateDebugResources UP-TO-DATE 
:app:mergeDebugResources UP-TO-DATE 
:app:processDebugManifest UP-TO-DATE 
:app:processDebugResources UP-TO-DATE 
:app:generateDebugSources UP-TO-DATE 
:app:processDebugJavaRes UP-TO-DATE 
:app:compileDebugJava UP-TO-DATE 
:app:preCompileDebugUnitTestJava 
:app:preDebugUnitTestBuild UP-TO-DATE 
:app:prepareDebugUnitTestDependencies 
:app:processDebugUnitTestJavaRes UP-TO-DATE 
:app:compileDebugUnitTestJava UP-TO-DATE 
:app:compileDebugUnitTestSources UP-TO-DATE 
:app:mockableAndroidJar UP-TO-DATE 
:app:assembleDebugUnitTest UP-TO-DATE 
:app:testDebug 
:app:testDebug FAILED 
FAILURE: Build failed with an exception. 
* What went wrong: 
Execution failed for task ':app:testDebug'. 
> No tests found for given includes: [my.package.MainActivityTest] 
* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 
BUILD FAILED 
Total time: 3.079 secs 
No tests found for given includes: [my.package.MainActivityTest] 

回答

1

請注意,您使用的是過時ActivityInstrumentationTestCase2和

像ActivityInstrumentationTestCase2或ServiceTestCase這樣的測試用例不贊成使用ActivityTestRule或ServiceTestRule。

因此,請嘗試切換到使用rules,這實際上非常簡單。另外,一定要使用正確的註釋。檢查我的其他答案here以獲得更多有用的參考。

相關問題