如何在IntelliJ 13中为Gradle Android项目创建Android测试模块?

时间:2014-07-18 18:48:39

标签: java android intellij-idea gradle android-testing

我已经在IntelliJ 13中成功创建了一个Android项目,我想设置Android测试框架。我使用新项目向导使用Gradle创建android项目。当我去添加一个新模块时,我只能选择" Gradle:Android Module"和#34; Gradle:Java Library","测试模块"选项缺失。

如何生成Android测试模块?我看过http://www.jetbrains.com/idea/webhelp/testing-android-applications.html,但我找不到任何"测试"选项。

如果无法自动生成Android测试模块,那么如何使用Gradle Android项目配置和使用Android测试框架?非常感谢您对示例或文档的链接。

详细信息: IntelliJ 13.1.3

4 个答案:

答案 0 :(得分:7)

所以目前你的目录结构应该是这样的:

ProjectDirectory/
  res/
  src/
    main/
      java/
        your.package.name
          MyClass.java

您需要做的就是为androidTest添加一个src目录:

ProjectDirectory/
  res/
  src/
    main/
      java/
        your.package.name
          MyClass.java
    androidTest/
      java/
        your.package.name
          MyClassTest.java

然后将Gradle文件与项目重新同步,并将其检测为测试目录。然后,您可以运行connectedCheckconnectedAndroidTest任务(我不清楚两者的差异)来运行测试。

如果您的目录结构与上述目录结构不同(例如,如果您认为Eclipse项目很重要),则可以在build.gradle脚本中指定备用src目录:

android {
    sourceSets {
        androidTest {
            java.srcDirs = ['path/to/test/src']
        }
    }
}

答案 1 :(得分:1)

作为替代方案您可以尝试切换到Android Studio,它建立在ItelliJ之上。如果您要创建新项目,Android Studio会自动为您创建测试目录。

答案 2 :(得分:1)

经过多次尝试,我找到了明确的好方法:

  1. 在您的包裹下创建一个测试文件夹。
  2. 创建一个类(称之为ExampleTest会很好)将InstrumentationTestCase扩展到此文件夹中。
  3. 让我们添加一个我们知道会失败的简单测试:

    public class ExampleTest extends InstrumentationTestCase {
        public void test() throws Exception {
            final int expected = 1;
            final int reality = 5;
            assertEquals(expected, reality);
        }
    }
    
  4. 请记住,所有测试方法必须以“test-”前缀开头,否则Android Studio不会将它们检测为测试,您将收到各种奇怪的错误,但没有任何方法可以正常工作。

    既然我们有一个注定失败的测试用例,我们现在必须运行它。 首先点击“运行 - >编辑配置。“ 现在选择“+ - > Android测试“从左上角选择”Android测试“并命名您的新测试配置”测试“或同等相关的东西。

    选择当前模块,然后选择“All in Package”选项并导航到刚刚创建的“test”文件夹。您还可以选择“All in Module”,Android Studio将自动在整个模块中找到任何测试!您还可以更具体地选择“类”甚至“方法”选项,以进一步缩小测试范围。

    应用,关闭并运行此配置!测试将运行..!

    此链接提供以下信息: http://rexstjohn.com/unit-testing-with-android-studio/ 它是为android studio编写的,但它也适用于intelliJ 13! ;) 玩得开心!

答案 3 :(得分:0)

我在Intellij中创建android项目时遇到了麻烦,所以现在我在Eclipse中创建项目然后将它们导入到Intellij中。它很烦人,但它很容易解决,而且很有效。