gpt4 book ai didi

Android Studio - 测试配置启动应用

转载 作者:太空狗 更新时间:2023-10-29 12:41:52 25 4
gpt4 key购买 nike

我在项目的单独包中有几个 AndroidTestCase 子类: enter image description here

但是,每当我从 Android Studio 运行 Android 测试 配置时,我都会看到我的常规应用程序也在启动。我看到 onCreate 方法在我的 Application 类中被激活(这真的很糟糕,因为我正在那里加载一些额外的资源)。 enter image description here
为什么 Android Studio/gradle 也在运行我的应用程序?
我能否以编程方式检测我是在内部测试还是常规配置?
我可以在运行测试之前停止启动我的常规应用程序吗?
此外,当我在 Debug模式下运行测试时,它不会在应用程序的 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 测试配置:

enter image description here

您应该将 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 - 测试配置启动应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com