1

我想使用的assertNotNull()方法测试片段的所有视图JUnit,因为我使用过fragmentobject.getView()但它不起作用,我认为片段在调用时正在加载,fragmentobject.getView()我使用计时器和线程让片段加载,即使我不能t 得到视图。有没有其他方法可以在 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 测试的文档。

UiAutomatorTestCase您可以创建一个从 UI 扩展并在 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 回答