小编tha*_*sma的帖子

如何使用gradle动态切换/更改testInstrumentationRunner

我的项目有两组不同的测试.一个组仅使用默认运行,另一个组AndroidJUnitRunner必须使用自定义实现运行TestRunner extends MonitoringInstrumentation.

目前我每次需要运行另一组测试时都会testInstrumentationRunner通过编辑来切换build.gradle:

android{
      defaultConfig {
          //testInstrumentationRunner "my.custom.TestRunner"
           testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
      }
}
Run Code Online (Sandbox Code Playgroud)

我知道口味可以有自己的味道,testInstrumentationRunner但我目前的应用程序已经有2个flavourDimensions.使用flavor实际上是为了拥有不同版本的app.我需要2个版本的测试应用程序,都使用不同的testInstrumentationRunners 测试相同的应用程序.

我尝试testInstrumentationRunner通过迭代所有测试变体来改变.实际上有多个testInstrumentationRunner属性:

android.testVariants.all { TestVariant variant ->
    //readonly
    variant.variantData.variantConfiguration.instrumentationRunner

    variant.variantData.variantConfiguration.defaultConfig.testInstrumentationRunner

}
Run Code Online (Sandbox Code Playgroud)

但是一旦android.testVariants调用,构建就会被配置,并且所有更改都不会反映在构建中.

如何动态更改testInstrumentationRunner(从gradle插件)?

我更喜欢有2个不同的gradle任务,每个任务使用不同的testInstrumentationRunner但是测试相同的变体.因为我打算创建一个gradle插件,所以解决方案也应该像插件一样工作.

android gradle android-testing android-gradle-plugin

22
推荐指数
3
解决办法
9365
查看次数

Android Espresso:如何在将一个活动跟踪到多个片段架构时测试特定片段

我的应用程序包含一个Activity用户Fragments.

我希望使用Espresso来测试用户界面Fragments.但是我遇到了一个问题.

如何测试一个Fragment未添加到ActivityonCreate.我见过的所有例子都Fragments涉及到Fragment被添加onCreate.那么我怎么能告诉Espresso去特定的Fragment并从那里开始呢?

谢谢

android android-fragments android-testing android-espresso

20
推荐指数
3
解决办法
1万
查看次数

Asynctask奇怪的行为

我用asynctask遇到了一些奇怪的警告.我正在学习GCM,所以我尝试使用asynctask.这是警告:

Type safety: The method execute(Object...) belongs to the raw type AsyncTask. References to generic type AsyncTask<Params,Progress,Result> should be parameterized
Run Code Online (Sandbox Code Playgroud)

我想了解这个警告的意思.它是关于线程的.为什么它不安全?这是什么原料?

这是我的代码:

private void registerInBackground() {
    // TODO Auto-generated method stub



    new AsyncTask() {
        @Override
        protected Object doInBackground(Object... arg0) {
            // TODO Auto-generated method stub
            String msg = "";
            try {
                if (gcm == null) {
                    gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
                }
                regid = gcm.register(SENDER_ID);
                msg = "Device registered, registration ID=" + regid;

                // You should send the registration ID to your …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask google-cloud-messaging

6
推荐指数
1
解决办法
1181
查看次数

Activity.findViewById() 在 Espresso 测试中返回 null

在 Espresso 测试中,我想获得我的参考,ViewPager以便我可以附加一个IdlingResource。但是findViewById返回null,即使我在ViewPager显示之前确认。

// Passes
onView(withId(R.id.viewPager)).check(matches(isDisplayed()));
Activity activity = activityTestRule.getActivity();
assertNotNull(activity);
// Fails
assertNotNull(activity.findViewById(R.id.viewPager));
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

android android-espresso

5
推荐指数
1
解决办法
1580
查看次数

Espresso:如何在WebView上调用evaluateJavascript()

我试图获得一个实例WebView,以便我可以调用evaluateJavascript()它.我编写了一个自定义匹配器,然后尝试将其分配WebView给静态变量,如下所示:

 public static WebView view1;

 public static Matcher<View> isJavascriptEnabled1() {
    return new BoundedMatcher<View, WebView>(WebView.class) {
        @Override
        public void describeTo(Description description) {
            description.appendText("WebView with JS enabled");
        }
        @Override
        public boolean matchesSafely(WebView webView) {
            view1 =webView;
            return webView.getSettings().getJavaScriptEnabled();
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

在我的测试课中,我打电话给:

 CustomMatcher.isJavascriptEnabled1();
 CustomMatcher.view1.evaluateJavascript("$('.status dl       dd').get(0).innerText.replace('pts.', '').replace(',', '').trim()\"]",new    ValueCallback<String>() {
   @Override
   public void onReceiveValue(String s) {
       Log.d("LogName", s); // Prints asd
   }
Run Code Online (Sandbox Code Playgroud)

});

我收到错误: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.evaluateJavascript(java.lang.String, android.webkit.ValueCallback)' on a null …

android android-espresso

3
推荐指数
1
解决办法
1387
查看次数