如何在Android Studio 1.1中运行简单的JUnit4测试?

时间:2015-03-03 22:32:19

标签: java android unit-testing junit android-studio

我有一个Android项目,显示" Hello World"。它是由"空白活动"来自Android Studio的模板。

然后我在我的应用程序包中添加/创建一个新的java类(与我的活动相同的包)。我称之为Shape并添加一个简单的构造函数

public class Shape {
    public Shape(int i){
        if (i==0){
            throw new IllegalArgumentException("Cant have 0");
        }
    }
}

大。现在我有一个根本没有触及Android的课程,我想对它进行单元测试。接下来我该怎么办?

这是我的问题停止的地方。下面我将介绍我尝试过的内容。

请注意,我以前从未在Android或Java中测试过。对不起#34;菜鸟"错误。

  1. 在Shape.java中,我去了"导航" > "试验"
  2. 按Enter键选择"创建新测试"
  3. 获取此弹出窗口,然后选择JUNIT4。
  4. enter image description here

    1. 然后点击修复按钮修复未找到的库
    2. 我得到了这个弹出窗口
    3. enter image description here

      1. 我不确定要选择什么,所以我选择默认/突出显示。
      2. 我写了我的考试

        package com.eghdk.getjunit4towork;
        
        import org.junit.Test;
        
        import static org.junit.Assert.*;
        
        public class ShapeTest {
            @Test(expected = IllegalArgumentException.class)
            public void testShapeWithInvalidArg() {
                new Shape(0);
            }
        }
        
      3. 此时,我不确定如何运行我的测试,但尝试这样做: enter image description here

      4. 运行

        时出现这些错误
          

        错误:(3,17)Gradle:错误:包org.junit不存在
          错误:(5,24)Gradle:错误:包org.junit不存在
          错误:(8,6)Gradle:错误:找不到符号类Test

4 个答案:

答案 0 :(得分:34)

自Android Studio 1.1以来,有(实验性的)unit test support。该页面的几个引用:

  

您必须在build.gradle中指定测试依赖项   你的android模块的文件。例如:

dependencies {
  testCompile 'junit:junit:4.12'
  testCompile "org.mockito:mockito-core:1.9.5"
}
     

要在AS中使用单元测试支持,您必须执行以下步骤:

     
      
  1. 更新build.gradle以使用android gradle插件版本1.1.0-rc1或更高版本(在build.gradle文件中手动或在文件>项目结构中的UI中)

  2.   
  3. 向app / build.gradle添加必要的测试依赖项(见上文)。

  4.   
  5. 在设置>中启用单元测试功能Gradle>实验

  6.   
  7. 同步您的项目。

  8.   
  9. 打开"构建变体"工具窗口(在左侧)并将测试工件更改为"单元测试"。

  10.   
  11. 为您的测试源代码创建一个目录,即src / test / java。您可以从命令行或使用   项目工具窗口中的项目视图。新目录应该是   此时以绿色突出显示。注意:测试源的名称   目录由gradle插件根据约定确定。

  12.   
  13. 创建测试。您可以通过打开课程,右键单击其名称并选择"转到>来完成此操作。测试&#34 ;.添加一些测试   例。
  14.   
  15. 右键单击新的测试类或方法,然后选择"运行..."。
  16.   
  17. (可选)您可以直接使用Gradle缩短编译时间。为此,请转到“运行”菜单并选择“#34;编辑”   配置&#34 ;.在那里,找到默认的JUnit模板,删除   "使"在发布前步骤并添加一个" Gradle aware make"相反   (将任务名称留空)。
  18.   

重要的是要知道有两种测试类型:androidTest和普通test

  • androidTest主要用于在模拟器或设备上运行的测试,例如检测测试。在命令行中,使用./gradlew connectedCheck运行这些。
  • test适用于您不想在设备上运行的测试,例如您编写的单元测试。您运行./gradlew test来运行这些测试。

如引言中所述,您可以通过更改测试工件在Android Studio中的androidTesttest之间切换。

当然,最好不要在设备或模拟器上运行测试,因为这会加快测试过程很多。通过新的实验性单元测试支持,您可以在不使用设备的情况下访问存根的Android API。这样,您就可以将更多测试从androidTest移至test

答案 1 :(得分:4)

对于android studio 1.2或更高版本,我包含了这个答案,因为这是谷歌的第一个排名之一,这是一个非常简单且非常容易学习如何使用Android Studio设置单元测试的教程,这是链接: https://io2015codelabs.appspot.com/codelabs/android-studio-testing#1

在浪费了2个小时试图进行测试后,我终于用上面的链接做了,希望它对你和我一样有用。

答案 2 :(得分:3)

现在Android Studio(当前版本1.4)具有完整的单元测试支持,没有任何解决方法。正如在自动生成的ExampleUnitTest:

中所建议的那样

To work on unit tests, switch the Test Artifact in the Build Variants view.

screen shot

答案 3 :(得分:0)

转到设置,然后构建工具,然后进行gradle,然后进行实验。在实验性取消选中启用所有测试工件。多数民众赞成游戏