2

テストクラスが 1 つあるこのロボティウム テストプロジェクトがあります。テスト クラスには、すべてのテスト メソッドが含まれています。現在、テスト クラスを実行すると、テスト メソッドがアルファベット順に実行されます。テストメソッド間にいくつかの依存関係があるため(これが推奨される方法ではないことはわかっています)、テストメソッドを特定の順序で実行したいと考えています。私が依存関係を持っている理由は、それにより、記述されるコードが少なくなり、テスト クラス全体がより高速に実行されるようになるためです。特定の順序でテスト メソッドを実行する方法はありますか?

4

3 に答える 3

3

テストスーツの注文を含むクラスを作成します。例:

package com.android.test; 

import junit.framework.TestSuite;
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase2;

public class AllTests extends  ActivityInstrumentationTestCase2<Activity> {



    public AllTests(Class<Activity> activityClass) {
        super(activityClass);
    }

    public static TestSuite suite() {
        TestSuite t = new TestSuite();
        t.addTestSuite(SplashScreenTest.class);
        t.addTestSuite(MainLoginScreenTest.class);
        t.addTestSuite(EmailSignUpScreenTest.class);
        t.addTestSuite(EmailVerificationTest.class);
        t.addTestSuite(EmailLoginScreenTest.class);

        return t; 
    }

    @Override
    public void setUp() throws Exception {

    }


    @Override
    public void tearDown() throws Exception {
    }

}

このようにして、ロボティウム テスト スーツの実行順序を設定できます。完全なチュートリアルについては、このリンクを確認してください

于 2014-03-19T08:26:31.733 に答える
1

それらを特定の順序で実行する方法は、テスト ケースごとにオブジェクトを作成し、各オブジェクトを 1 つのテスト ケースでインスタンス化することでした。これにより、いつどのテストを実行するかを決定できます。欠点は、setup メソッドを 1 回しか実行しないことです。

これが私がしたことです:

...//class variables and such
static {
    try {
        launcherActivityClass = Class
                .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
    } catch (ClassNotFoundException e) {
        throw new RuntimeException(e);
    }
}

public NewRobotiumTest() throws ClassNotFoundException {
    super(TARGET_PACKAGE_ID, launcherActivityClass);
}

private Solo solo;

@Override
protected void setUp() throws Exception {

    solo = new Solo(getInstrumentation(), getActivity());
    to = new TestObject();


    /*This resets the test documents. 
     * If running multiple test methods in this class
     * remove this method from the setup and place in first test method*/
    to.restTestDocuments(); 

}

public void testSuite() throws IOException {

    try {

        // Test the Recommended For You section
        RecommendForYou rfy = new RecommendForYou();
        rfy.testRecommedForYou(solo, to);
        Log.i(TAG, RECOMMENDED + " Section test complete.");

        //Test the Music section of the app
        Music music = new Music();
        music.testMusic(solo, to); 
        Log.i(TAG, MUSIC + " Section test complete.");

        // Test Social Networking section of the app
        Social social = new Social();
        social.testSocial(solo, to);
        Log.i(TAG, SOCIAL + " Section test complete.");

        // Test Verizon Apps section of the app
        VerizonApps vza = new VerizonApps();
        vza.testVerizonApps(solo, to);
        Log.i(TAG, VERIZONAPPS + " Section test complete.");

        // Test Entertainment section of the app
        Entertainment ent = new Entertainment();
        ent.testEntertainment(solo, to);
        Log.i(TAG, ENTERTAINMENT + " Section test complete.");

        // Test Games Section of the app
        Games games = new Games();
        games.testGames(solo, to);
        Log.i(TAG, GAMES + " Section test complete.");

        // Test Featured section of the app
        Featured featured = new Featured();
        featured.testFeatured(solo, to);
        Log.i(TAG, FEATURED + " Section test complete.");

        // Test Business section of catalog
        Business bus = new Business();
        bus.testBusiness(solo, to);
        Log.i(TAG, BUSINESS + " Section test complete.");

        // Test the New Apps link in the ODP catalog
        NewApps nat = new NewApps();
        nat.testNewApps(solo, to);
        Log.i(TAG, NEW + " Section test complete.");

        //Test the Top Sellers section of the app
        TopSeller ts = new TopSeller();
        ts.testTopSellers(solo, to);
        Log.i(TAG, TOPSELLER + " Section test complete.");

        //Test the Top Download section of the app
        TopDownload td = new TopDownload();
        td.testTopDownload(solo, to);
        Log.i(TAG, TOPDOWNLOAD + " Section test complete.");

        //Test the Themes section of the app
        Themes themes = new Themes();
        themes.testThemes(solo, to); 
        Log.i(TAG, THEMES + " Section test complete.");

        //Test the Tools section of the app
        Tools tools = new Tools();
        tools.testTools(solo, to);
        Log.i(TAG, TOOLS + " Section test complete.");

        //Test the News section of the app
        News news = new News();
        news.testNews(solo, to);
        Log.i(TAG, NEWS + " Section test complete.");

        //Test the Sports section of the app
        Sports sports = new Sports();
        sports.testSports(solo, to);
        Log.i(TAG, SPORTS + " Section test complete.");

        //Test the Reading section of the app
        Reading read = new Reading();
        read.testReading(solo, to); 
        Log.i(TAG, READING + " Section test complete.");

        //Test the Money section of the app
        Money money = new Money();
        money.testMoney(solo, to);
        Log.i(TAG, MONEY + " Section test complete.");

        //Test the Shopping section of the app
        Shopping shop = new Shopping(); 
        shop.testShopping(solo, to);
        Log.i(TAG, SHOPPING + " Section test complete.");

        //Test the Fitness section of the app
        Fitness fit = new Fitness(); 
        fit.testFitness(solo, to); 
        Log.i(TAG, FITNESS + " Section test complete.");

        //Test the Travel Section of the app
        Travel travel = new Travel();
        travel.testTravel(solo, to);
        Log.i(TAG, TRAVEL + " Section test complete.");

        //Test the Spanish section of the app
        Spanish spanish = new Spanish();
        spanish.testSpanish(solo, to); 
        Log.i(TAG, SPANISH + " Section test complete.");

        // Test the search functionality
        TestSearch test = new TestSearch();
        test.testSearchFunctionality(solo, to);


    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        printTotals(to);
    }

}

@Override
public void tearDown() throws Exception {

    try {

        bw.close();

        solo.finalize();
    } catch (Throwable e) {
        e.printStackTrace();
    }
    solo.finishOpenedActivities();

    super.tearDown();

}

public void printTotals(TestObject to) throws IOException {

    // if there is no SD card
    if (Environment.getExternalStorageState() == null) {
        directory = new File(Environment.getDataDirectory()
                + "/RobotiumTestLog/");
        photoDirectory = new File(Environment.getDataDirectory()
                + "/Robotium-Screenshots/");

        // if no directory exists, create new directory
        if (!directory.exists()) {
            directory.mkdir();
        }

        // if phone DOES have sd card
    } else if (Environment.getExternalStorageState() != null) {
        // search for directory on SD card
        directory = new File(Environment.getExternalStorageDirectory()
                + "/RobotiumTestLog/");
        photoDirectory = new File(Environment.getExternalStorageDirectory()
                + "/Robotium-Screenshots/");

        // if no directory exists, create new directory to store test
        // results
        if (!directory.exists()) {
            directory.mkdir();
        }
    }// end of SD card checking

    String fileName2 = "TotalTestResults.csv";
    File totLogRes = new File(directory, fileName2);
    bw = new BufferedWriter(new FileWriter(totLogRes, true));

    int totCases = to.getTestCase();
    int totPass = to.getTestPass();
    int totFail = to.getTestFail();
    int totRev = to.getNeedReview();
    bw.write("\"\n\"");
    bw.write("Total Test Results\",\"" + totCases + "\",\"" + totPass
            + "\",\"" + totFail + "\",\"" + totRev + "\"\n\"");
}
  }
于 2012-08-02T21:19:10.810 に答える
0

ここで説明されているように、 JUnitの推奨事項に従ってテストを整理することができます 。スイーツ/

于 2012-10-03T21:48:13.363 に答える