2015-08-20 3 views
4

Я пытаюсь написать тест черного ящика для приложения, в котором у меня есть только APK (без исходного кода) с помощью Robotium. Документация очень плохая и ограничена Eclipse. Я пытаюсь понять, как писать такие тесты на Android Studio. До сих пор я создал новый проект и модифицировал Gradle файл для зависимостейТестирование черного ящика Android Studio с Robotium

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.crysis.myautomatedtest" 
     minSdkVersion 18 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:22.2.1' 

    compile 'com.jayway.android.robotium:robotium:5.4.1' 
    compile 'com.jayway.android.robotium:robotium-solo:5.4.1' 
} 

тогда я писать тесты, и я положил их в основной папке (так как это тест-только проект, протестировать внешний APK)

package com.crysis.myautomatedtest; 

import android.test.ActivityInstrumentationTestCase2; 
import android.widget.EditText; 

import com.robotium.solo.Solo; 

public class RobotiumTest extends ActivityInstrumentationTestCase2 { 
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.external.apptotest.LoginActivity"; 
    private static Class launcherActivityClass; 
    static { 
     try { 
      launcherActivityClass = Class 
        .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 
     } catch (ClassNotFoundException e) { 
      throw new RuntimeException(e); 
     } 
    } 
    public RobotiumTest() throws ClassNotFoundException { 
     super(launcherActivityClass); 
    } 
    private Solo mDevice; 

    @Override 
    public void setUp() throws Exception { 
     mDevice = new Solo(getInstrumentation(), getActivity()); 
    } 

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

    public void testLogin() { 
     mDevice.clearEditText((EditText)mDevice.getView("id/username")); 
     mDevice.enterText((EditText) mDevice.getView("id/username"), "Test"); 

     assertTrue("Problem asserting text", mDevice.searchText("Test")); 
    } 
} 

Это мое понимание того, что для того, чтобы найти приложение, я должен изменить манифест и точку в targetPackage. Я судимый как этого

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.crysis.myautomatedtest"> 

    <application android:allowBackup="true" android:label="@string/app_name" 
     android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme"> 

    </application> 

    <instrumentation 
     android:name="android.test.InstrumentationTestRunner" 
     android:targetPackage="com.external.apptotest" /> 

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

</manifest> 

Но есть ошибка в этой строке, которая заявляет

не удается разрешить символ «com.external.apptotest» (то есть пакет приложения тестировать, установленный на device) Проверяет ссылки на ресурсы в файле Android XML

Очевидно, что я чего-то не хватает. Как я обрабатываю APK для тестирования при тестировании черного ящика? Как мне дать ссылку на то, что тестировать на Robotium?

+0

любое обновление для этого? Любое рабочее решение? – codevscolor

ответ

0

Необходимо указать тестовое приложение в файле build.gradle. В разделе defaultConfig добавьте

testApplicationId "com.external.apptotest" 
Смежные вопросы