我在项目的单独程序包中有几个AndroidTestCase子类:
但是,每当我从AndroID Stu@R_403_6901@运行AndroID测试配置时,我都会看到我的常规应用也正在启动.我看到onCreate方法在我的Application类中启动了(这真的很糟糕,因为我在那里加载了一些其他资源).
为什么AndroID Stu@R_403_6901@ / 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 Stu@R_403_6901@/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-测试配置启动应用程序全部内容,希望文章能够帮你解决Android Studio-测试配置启动应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)