Gradle:编译Android JUnit测试APK文件

3

我可以使用Gradle脚本编译Android JUnit测试apk文件吗?现在我的测试类是:

    public class main extends ActivityInstrumentationTestCase2<LoginWindow> {
        public main() {
        super("com.tecomgroup.handifox", LoginWindow.class);
        }
        ...
    }

Gradle说找不到LoginWindow类。我应该将LoginWindow.java添加到dependencies {}块中吗?这样的测试会起作用吗?或者还有其他编译测试apk文件的方法吗?


1
Gradle Android插件中的项目结构与Ant Android结构不同。测试位于项目内的src/test/java目录中,而不是另一个项目中。您是否在另一个项目中进行测试? - Grzegorz Żur
我的应用程序和针对它的JUnit测试是两个不同的项目(如果我理解你的问题正确的话)。 - keymusicman
@user2172741 然后你必须将该项目的 jar 作为 compiletest 依赖项添加。 - S.D.
1个回答

2
使用Gradle Android插件时,您不再需要为测试创建单独的项目。生产源代码应放置在src/main/java目录中,测试源代码应放置在src/instrumentTest/java目录中。资源也是如此。有关详细信息,请参阅Android Gradle插件用户指南中的项目结构部分。

Project Structure

The basic build files above expect a default folder structure. Gradle follows the concept of convention over configuration, providing sensible default option values when possible.

The basic project starts with two components called “source sets”. The main source code and the test code. These live respectively in:

src/main/
src/instrumentTest/

Inside each of these folders exists folder for each source components. For both the Java and Android plugin, the location of the Java source code and the Java resources:

java/
resources/

For the Android plugin, extra files and folders specific to Android:

AndroidManifest.xml
res/
assets/
aidl/
rs/
jni/

Note: src/instrumentTest/AndroidManifest.xml is not needed as it is created automatically.

你可以更改标准项目布局
sourceSets {
    instrumentTest {
        java {
            srcDir '../other/src/java'
        }
        resources {
            srcDir '../other/src/resources'
        }
    }
}

我认为团队领导不会接受这样的源代码操作。也许有另一种方法来编译测试apk文件?或者可以通过某种方式运行它,并链接到主项目文件夹? - keymusicman
@user2172741 你可以更改测试源文件的目录。请检查更新。但是要记住“约定优于配置”! - Grzegorz Żur
@user2172741 当你编译Android项目时,你会使用Android插件来在模拟器或设备上执行仪器化测试。这与Gradle的标准Java插件不同。http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Basic-Project - Grzegorz Żur
谢谢。现在我可以构建项目和测试apk文件(正如您建议的,只有一个带有默认文件夹的项目),但我无法签署测试apk文件(因此我无法测试项目的发布版本),并且运行测试时会显示0个测试待定。 - keymusicman
Grzegorz,我决定使用Maven来构建apk文件。现在它可以工作了。你的提示非常有用,谢谢! - keymusicman
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接