2015-08-20 61 views
0

在Android Studio中的测试工作正常,但通过命令行它不工作。Robotium测试从控制台上的Android虚拟设备不起作用

1.I Android Studio中1.3.1建项目,打开虚拟设备和CMD

2. adb install C:\...\build\outputs\apk\Audioteka-debug.apk 

3. adb shell pm list instrumentation //there is instrumentation definded in Android Manifest 

4. adb shell am instrument -w pl.k2.droidoaudioteka/android.test.InstrumentationTestRunner 

结果:

Test results for InstrumentationTestRunner= 
Time: 0.001 

OK (0 tests) 

事实证明,有在APK DEX没有测试类。

我的测试是在同一个项目的结构如下:

-src 
     | 
     +--main 
     | | 
     | +--java 
     | | | 
     | | +--pl.k2.droidoaudioteka 
     | |   \--AudiotekaApplication.java 
     | | 
     | \--AndroidManifest.xml 
     | 
     +--test 
      | 
      +--java 
       | 
       +--pl.k2.droidoaudioteka 
         | 
         \--_1_2_0_LaunchAfterAppInstallationTest.java 
         | 
         \--_1_2_1_... 

我已经添加了体现

<manifest> 
.... 
    <application> 
    ... 
    <uses-library android:name="android.test.runner" /> 
    </application> 

    <instrumentation 
    android:name="android.test.InstrumentationTestRunner" 
    android:label="RobotiumTest" 
    android:targetPackage="pl.k2.droidoaudioteka" /> 
</manifest> 

在gradle这个我有

android { 
    ... 
    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 14 
     testInstrumentationRunner "android.test.InstrumentationTestRunner" 

    } 
    sourceSets { 
     main { 
      java.srcDirs = ['src/main/java'] 
      aidl.srcDirs = ['src/main/java'] 
      androidTest.setRoot('src/test') 
     } 
    } 
    ... 
} 

dependencies { 
    ... 
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.3.1' 

} 

和典型测试课程如下所示:

package pl.k2.droidoaudioteka; 

import android.test.ActivityInstrumentationTestCase2; 

import com.robotium.solo.Solo; 

/** 
* Created by Admin on 2015-05-12. 
*/ 
public class _1_2_0_LaunchAfterAppInstallationTest extends ActivityInstrumentationTestCase2 { 
    private Solo solo; 
    private long startTime; 
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "pl.k2.droidoaudioteka.ui.views.impl.smartphone.WelcomeActivity"; 

    private static Class<?> launcherActivityClass; 
    static{ 
     try { 
      launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 
     } catch (ClassNotFoundException e) { 
      throw new RuntimeException(e); 
     } 
    } 

    @SuppressWarnings("unchecked") 
    public _1_2_0_LaunchAfterAppInstallationTest() throws ClassNotFoundException { 
     super(launcherActivityClass); 
    } 

    public void setUp() throws Exception { 
     super.setUp(); 
     solo = new Solo(getInstrumentation()); 
     getActivity(); 
    } 

    @Override 
    public void tearDown() throws Exception { 
     solo.finishOpenedActivities(); 
     super.tearDown(); 
    } 

     public void testRun() { 
/*  During first launch after app installation, verify if the screen with flags of countries and slider is presented. 
     Flags represent local stores. 
*/ 
     //test code here 
     } 
} 

回答

0

与指挥大楼

gradlew.bat clean assembleDebug test 

做的工作