У меня есть страница регистрации моего приложения в веб-просмотре.Сейчас я пишу свой тестовый пример для этого, но не могу запустить тест.
В моей основной деятельности у меня есть функция initUi, которая будет инициировать намерение моей webviewActivity, а внутри моей webviewActivity есть FragWebView, в которомURL-адрес загружается.
Вот пример кода из FragWebView :
WebView webView = (WebView) layout.findViewById(R.id.web_view);
String url = getArguments().getString(Extras.URL, null);
if(url != null){
webView.clearCache(true);
webView.clearHistory();
webView.getSettings().setJavaScriptEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
webView.loadUrl(url);
webView.setVisibility(View.VISIBLE);
} else {
webView.setVisibility(View.GONE);
}
Намерение перейти к открытию веб-просмотра с помощью MainActivity - :
Intent intent = new Intent(getContext(), ActivityWebView.class);
intent.putExtra(Extras.URL, "https://www.racq.com.au/register?device=mobile");
startActivity(intent);
bottomToTopAnimation();
Теперь контрольный пример, который я написал для этого веб-просмотра, выглядит следующим образом :
@RunWith(AndroidJUnit4.class)
public class ActivityRegistrationTest {
@Rule
public ActivityTestRule<ActivityWebView> mActivityRule =
new ActivityTestRule<ActivityWebView>(ActivityWebView.class,
false, false) {
@Override
protected void afterActivityLaunched() {
onWebView().forceJavascriptEnabled();
}
};
@Test
public void testSingUpWebPage()throws Exception
{
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// check WELCOME text is present
onWebView().withElement(findElement(Locator.ID, "register"))
.check(webMatches(getText(), containsString("Register")));
//Check UI elements text boxes and buttons are present on the page
onWebView().check(webContent(hasElementWithId("l")));
onWebView().check(webContent(hasElementWithId("phracq_body_0_phracq_contentcontainer_0_ucFirstName_txt")));
onWebView().check(webContent(hasElementWithId("phracq_body_0_phracq_contentcontainer_0_ucLastName_txt")));
onWebView().check(webContent(hasElementWithId("date_of_birth")));
onWebView().check(webContent(hasElementWithId("phracq_body_0_phracq_contentcontainer_0_ucPostCode_txt")));
//enter values
onWebView().withElement(findElement(Locator.ID,"phracq_body_0_phracq_contentcontainer_0_ucFirstName_txt")).perform(webKeys("siddharth"));
}
}
Вот список версий IЯ использую внутри приложения :
// Espreso Dependencies
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation("com.android.support.test.espresso:espresso-contrib:2.2.2") {
exclude group: 'com.android.support', module: 'appcompat'
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.android.support', module: 'support-v7'
exclude group: 'com.android.support', module: 'design'
exclude module: 'support-annotations'
exclude module: 'recyclerview-v7'
}
androidTestImplementation('com.android.support.test.espresso:espresso-web:2.2') {
exclude group: 'com.android.support', module: 'support-annotations'
}
Ошибка, я получаю :
java.lang.NoSuchMethodError: Нет метода интерфейса trackUsage (Ljava /lang / String;) V в классе Landroid / support / test / internal / runner / tracker / UsageTracker;или его суперклассы (объявление 'android.support.test.internal.runner.tracker.UsageTracker' отображается в /data/app/com.racq.racq.test-2/base.apk) на android.support.test.espresso.web.sugar.Web. (Web.java:64) в com.mnetmobile.racq.ActivityRegistrationTest.setUp (ActivityRegistrationTest.java:36) в java.lang.reflect.Method.invoke (собственный метод) в org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:50) в org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:12) в org.junit.runners.moteFFrameworkMethod.java:47) в android.support.test.internal.runner.junit4.statement.RunBefores.evaluate (RunBefores.java:76) в android.support.test.rule.ActivityTestRule $ ActivityStatement.evaluate (ActivityTestRule.java:527) по адресу org.junit.rules.RunRules.evaluate (RunRules.java:20) по адресу org.junit.runners.ParentRunner.runLeaf (ParentRunner.java:325) по адресу org.junit.runners.BlockJUnit4ClassRunner.Junn (BlockRunSunSunSunSunSunSunSunSunSunSunSunSunSunSunSunSunSunS)r.java:78) в org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:57) в org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290) в org.junit.run.schedule (ParentRunner.java:71) в org.junit.runners.ParentRunner.runChildren (ParentRunner.java:288) в org.junit.runners.ParentRunner.access $ 000 000 (ParentRunner.java:58) в org.junit.un.ParentRunner $ 2.evaluate (ParentRunner.java:268) в org.junit.runners.ParentRunner.run (ParentRunner.java:363) в android.support.test.runner.AndroidJUnit4.run (AndroidJUnit4.java:1g) или.junit.runners.Suite.runChild (Suite.java:128) в org.junit.runners.Suite.runChild (Suite.java:27) в org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290)в org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) в org.junit.runners.ParentRunner.runChildren (ParentRunner.java:288) в org.junit.runners.ParentRunner.access $ 000 (родитель): 58) в org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:268)в org.junit.runners.ParentRunner.run (ParentRunner.java:363) в org.junit.runner.JUnitCore.run (JUnitCore.java:137) в org.junit.runner.JUnitCore.run (JUnitC)) на android.support.test.internal.runner.TestExecutor.execute (TestExecutor.java:56) на android.support.test.runner.AndroidJUnitRunner.onStart (AndroidJUnitRunner.java:384) на android.app.Instrumentation $ InstrumentationThread.запустить (Instrumentation.java:1984)
пожалуйста, дайте мне знать, как решить эту проблему.
С уважением