1

assertNotNull()のメソッドを使用してフラグメントのすべてのビューをテストしたいのですがJUnit、そのために使用しましたが、機能fragmentobject.getView()していません。呼び出し時にフラグメントがロードされていると思いますfragmentobject.getView()。ビューを取得します。JUnitテストケースでフラグメントのビューを取得する他の方法はありますか?JUnitスレッドとタイマーを使用してフローを制御することは可能ですか?

Timer myTimer = new Timer();
     myTimer.schedule(new TimerTask() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            mainFragmentManager.addLaunchMainmenu();
                    /*mainFragmentMAnager is fragmentactivity object 
                    and addLaunchMainMenu() adds fragment */
            Log.d("LaunchMenuTest"," In side timer loop");
                            view = launchmainmenu.getView();
            }
    },60000);

mainFragmentManager は fragmentactivity オブジェクトであり、addLauchMainmenu() はフラグメントを追加します。

4

1 に答える 1

0

Android での UI テストに関するこのドキュメントを確認することをお勧めします。

UIから拡張しUiAutomatorTestCaseて UI をナビゲートするテスト クラスを作成できます。以下のコードは、ユーザーがホーム画面 -> アプリ メニュー -> アプリをクリックしてアプリケーションを開くことをシミュレートしています。

public class TestClass extends UiAutomatorTestCase {   

  public void testDemo() throws UiObjectNotFoundException {

    // Simulate a short press on the HOME button.
    getUiDevice().pressHome();

    // We’re now in the home screen. Next, we want to simulate 
    // a user bringing up the All Apps screen.
    // If you use the uiautomatorviewer tool to capture a snapshot 
    // of the Home screen, notice that the All Apps button’s 
    // content-description property has the value “Apps”.  We can 
    // use this property to create a UiSelector to find the button. 
    UiObject allAppsButton = new UiObject(new UiSelector()
       .description("Apps"));

    // Simulate a click to bring up the All Apps screen.
    allAppsButton.clickAndWaitForNewWindow();

    // In the All Apps screen, the Settings app is located in 
    // the Apps tab. To simulate the user bringing up the Apps tab,
    // we create a UiSelector to find a tab with the text 
    // label “Apps”.
    UiObject appsTab = new UiObject(new UiSelector()
       .text("Apps"));

    // Simulate a click to enter the Apps tab.
    appsTab.click();

    // Next, in the apps tabs, we can simulate a user swiping until
    // they come to the Settings app icon.  Since the container view 
    // is scrollable, we can use a UiScrollable object.
    UiScrollable appViews = new UiScrollable(new UiSelector()
       .scrollable(true));

    // Set the swiping mode to horizontal (the default is vertical)
    appViews.setAsHorizontalList();

    // Create a UiSelector to find the Settings app and simulate      
    // a user click to launch the app. 
    UiObject yourApp = appViews.getChildByText(new UiSelector()
       .className(android.widget.TextView.class.getName()), 
       "YOUR_APP_NAME");
    yourApp.clickAndWaitForNewWindow();

    //This is where you can put your wait to wait for the activity
    //to load the fragment

    // Validate that the package name is the expected one
    UiObject fragmentObject = new UiObject(new UiSelector()
       .resourceId(R.layout.fragment/*the layout id of your fragment*/));
    assertTrue("Fragment not loaded", 
       fragmentObject.exists());   
  }   
}
于 2013-09-13T14:23:07.333 に答える