android studio测试应用,Android Studio-测试配置启动应用程序

我在项目的单独程序包中有几个AndroidTestCase子类:

但是,每当我从Android Studio运行Android测试配置时,我都会看到我的常规应用也正在启动.我看到onCreate方法在我的Application类中启动了(这真的很糟糕,因为我在那里加载了一些其他资源).

为什么Android Studio / gradle也同时运行我的应用程序?我可以通过编程方式检测我是否处于测试或常规配置中吗?运行测试之前,我可以停止引导常规应用程序吗?

另外,当我以调试模式运行测试时,它不会在放置在应用程序onCreate方法内部的断点处停止.为什么会这样呢?

编辑:

测试类的主体并不重要,可以是这样的:

public class SimpleTest extends AndroidTestCase {

public void testSample()

{

assertEquals(true, false);

}

}

仅执行此简单测试会在应用程序类内部启动onCreate方法.

Gradle控制台打印出:

Executing tasks: [:app:assembleDebug, :app:assembleDebugTest]

我猜第一个任务创建了我的Application类的实例-这是预期的行为吗?

解决方法:

Why is Android Studio/gradle running my app as well?

Can I stop my regular app from being booted before running tests?

AndroidTestCase是JUnit TestCase的扩展,它知道您的android应用程序.如果您不需要测试您的android应用程序而只想测试纯Java,则应该使用JUnit框架.创建常规的JUnit测试,不要在其中使用android类,并运行JUnit测试配置,如下所示:

您应该将AndroidTestCase视为工具测试,它将构建android应用并在其上运行该测试.结合使用Espresso和Robotium很有用.两者都可以在基本的android测试类上运行,并且都将在测试之前构建并运行您的应用程序.需要真实的设备或仿真器.

使用普通的JUnit测试或Robolectric在桌面JVM上测试Java.

Can I programatically detect if I am inside test or regular configuration?

您可以使用gradle的功能通过自动生成的BuildConfig文件提供此类信息.

在您的build.gradle

android {

defaultConfig {

testPackageName "com.foo.test"

}

}

在您的代码:

BuildConfig.PACKAGE_NAME.equals("com.foo.test")

标签:android-studio,gradle,android-testing,android

来源: https://codeday.me/bug/20191121/2052721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值