1 //package com.softwinner.pad.mark3d;
2 package com.softwinner.performance.benchmark.mark3d;
3
4 import android.content.Context;
5 import android.content.Intent;
6 import android.os.RemoteException;
7 import android.support.test.InstrumentationRegistry;
8 import android.support.test.uiautomator.By;
9 import android.support.test.uiautomator.UiDevice;
10 import android.support.test.uiautomator.UiObject;
11 import android.support.test.uiautomator.UiSelector;
12 import android.support.test.uiautomator.UiWatcher;
13 import android.support.test.uiautomator.Until;
14 import android.util.Log;
15
16 import com.softwinner.performance.filecopyspeed.TestBase;
17
18 import org.junit.After;
19 import org.junit.Before;
20 import org.junit.Test;
21
22 import static com.softwinner.performance.benchmark.mark3d.UiAssistant.LAUNCH_TIMEOUT;
23 import static junit.framework.Assert.assertTrue;
24 import static org.hamcrest.core.IsNull.notNullValue;
25 import static org.junit.Assert.assertThat;
26
27 /**
28 * mobilexprt2015 performance test
29 * @author liuzhipeng
30 */
31
32 public class MobileXPRTTest {
33
34 private static final String packageName = "com.mobilexprt2015";
35 private String[] path = {
36 "/sdcard/performance/mobilexprt/screen/",
37 "/sdcard/performance/mobilexprt/log/"};
38
39 private String logTag = "mobilexprttest";
40 private UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
41 private UiAssistant cAssistant = new UiAssistant(mDevice,path);
42
43 private String startButton = "com.mobilexprt2015:id/customize_screen_start_tests";
44 private String testingObject = "com.mobilexprt2015:id/tv_next_scenario";
45 private String testendObject = "com.mobilexprt2015:id/group_name";
46
47
48 @Before
49 public void setUp() throws Exception {
50 cAssistant.setup(path,logTag);
51 this.watcherEndTheCall();
52 }
53
54 /**
55 * test mobilexprt performance
56 * @author liuzhipeng
57 * @return null
58 * @throws Exception
59 */
60 @Test
61 public void testAI030004MobileXPRT() throws Exception
62 {
63 int TestNumber = 0;
64 while(TestNumber < 1){
65 String assisStr = "[TestNumber_"+TestNumber+"]";
66 openApplication(packageName);
67 Log.i(logTag,assisStr+"open mobilexprt ");
68 Thread.sleep(5000);
69 // UiObject startTest = mDevice.findObject(new UiSelector().
70 // resourceId(startButton));
71 // assertTrue("not found start test button",startTest.exists());
72 // startTest.clickAndWaitForNewWindow();
73 // Log.i(logTag,assisStr+"click start test button");
74 // assertTrue("step[1] fail",cAssistant.WaitforUnitObjectExist(0,testingObject,5,100));
75 // Log.i(logTag,assisStr+"testing page["+testingObject+ "]exist");
76 // Thread.sleep(1000*60*1);
77 // assertTrue("step[2] fail",cAssistant.WaitforUnitObjectExist(0,testendObject,17*60,500));
78 // Log.i(logTag,assisStr+"test end page["+testendObject+"]exist");
79 // cAssistant.takescreen("mobilexprt[TestNumber_"+TestNumber +"]End",
80 // "[TestNumber_"+TestNumber +"]mobilexprtScore");
81 // Log.i(logTag,assisStr+"test end,and takescreen");
82 cAssistant.QuitApplication(packageName);
83 Log.i(logTag,assisStr+"quit mobilexprt");
84 Thread.sleep(1000*10);
85 TestNumber++;
86
87 }
88
89 }
90 public void openApplication(String packName) throws RemoteException {
91 mDevice.wakeUp();
92 /* Start from the home screen*/
93 mDevice.pressHome();
94
95 final String launcherPackage = mDevice.getLauncherPackageName();
96 assertThat(launcherPackage,notNullValue());
97 mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
98 LAUNCH_TIMEOUT);
99
100 // launch the app
101 Context context = InstrumentationRegistry.getContext();
102 final Intent intent = context.getPackageManager()
103 .getLaunchIntentForPackage(packName);
104 // Clear out any previous instances
105 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
106 context.startActivity(intent);
107
108 // Wait for the app to appear
109 mDevice.wait(Until.hasObject(By.pkg(packName).depth(0)),
110 LAUNCH_TIMEOUT);
111 }
112 private void watcherEndTheCall(){
113 // UiDevice 动作不会触发监听器
114 // runWatcher是在查找控件失败时会调用,当然你也可以自己调用
115 // findAccessibilityNodeInfo里面会调用runWatcher
116 // UiObject.findAccessibilityNodeInfo,查找控件会用到
117 mDevice.registerWatcher("endCallWatcher", new UiWatcher() {
118 UiObject incomingCall = mDevice.findObject(new UiSelector()
119 .resourceId(""));
120 @Override
121 public boolean checkForCondition() {
122 System.out.println("endCallWatcher running");
123 if(incomingCall.exists()){
124 try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}
125 System.out.println("endCall success");
126 return true;
127 }
128 System.out.println("endCall fail");
129 return false;
130 }
131 });
132 }
133 @After
134 public void tearDown() throws Exception {
135 Log.i(logTag,"is triggered :"+ mDevice.hasWatcherTriggered("endCallWatcher"));
136 mDevice.removeWatcher("endCallWatcher");
137
138 }
139 }