android - 在 Android Studio 中使用非生产 Activity 进行测试

标签 android testing android-activity android-studio

在 Android Studio 之前,测试和 Android 应用涉及一个单独的 Android 项目,在构建生产环境时会被忽略。在 Android Studio 中,生产代码和测试代码存在于同一个项目中,而项目本身只有一组其他内容( list 、 Assets 、资源)。

既然如此,我将如何定义仅用于测试的自定义 Activity?为了让 Android 允许启动任何 Activity,它必须在 list 中声明。有没有办法绕过这个限制?如何指示 Android 加载仅测试 Activity 而不污染项目的生产方面?

最佳答案

这里是怎么做的。

1.在你的 build.gradle 中定义一个新的构建类型:

buildTypes {
    extraActivity {
        signingConfig signingConfigs.debug
        debuggable true
    }
}

我已经给它调试签名配置并将其设置为可调试;配置你认为合适的。

2.点击Sync Project with Gradle Files按钮。

3.从 Build Variants 窗口中选择您的新构建类型。

4.为您的新构建类型设置源目录

在我的示例中,我的文件位于 com.example.myapplication3.app Java 包中。

src/extraActivity/java/com/example/myapplication3/app
src/extraActivity/res

5.在您的构建类型的文件夹中创建新 Activity

请注意,如果您右键单击包并选择 New> Activity,则会出现错误,它不会将 Activity 的文件放入您的新包中构建类型的文件夹,但它会将它们放在 src/main 中。如果这样做,则必须手动将文件管理器移到正确的文件夹中。

6.在 src/extraActivity 中创建一个 AndroidManifest.xml 文件

此 list 与 src/main 中的版本合并,因此只需在原始 list 上添加您需要覆盖的位:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication3.app" >

    <application>
        <activity
            android:name=".ExtraActivity"
            android:label="Extra Activity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

在我的示例中,我已将新 Activity 设置为启动器 Activity ,以便我可以在应用程序屏幕中看到它并确认它正在工作;你可能不需要这样做。由于我为我的应用程序提供了两个启动器图标,因此我还需要遵循 Two launcher activities 的建议。并将其添加到我的主要 Activity 的 intent-filter(在 src/main/AndroidManifest.xml 中);您可能也不需要这样做:

<category android:name="android.intent.category.DEFAULT"/>

这是完成所有这些后我的项目布局的屏幕截图:

Screen shot showing project structure

这对我有用。我可以使用 Build Variants 窗口来回切换构建类型(您可以在上面屏幕截图的左侧看到它的选项卡);构建 debug 变体只给我一个 Activity ,而构建 extraActivity 变体给我两个。

关于android - 在 Android Studio 中使用非生产 Activity 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22024537/

相关文章:

android - 在没有 ArCore 的情况下与 SceneView 内的 3D 模型交互

startup - 如何禁用所有自动启动的应用程序

android - 在 OnCompletionListener 中使用 MediaPlayer get 添加对象

testing - 基于 Web 的项目的自动测试

android - 更改 Android 应用程序中的区域设置不会更改 Activity 标签

java - 在 Activity 之间传递自定义对象

android - 将启动新列表 Activity 的按钮添加到 fragment

Android 上的 Javascript onKeyPress 键代码始终为 0

database - 用于在开发数据库上创建类似 "test"环境的工具

ssl - 在使用 TestCafe 时尝试登录 gmail