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