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