Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android Studio 1.1中运行简单的JUnit4测试?_Java_Android_Unit Testing_Junit_Android Studio - Fatal编程技术网

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

Java 如何在Android Studio 1.1中运行简单的JUnit4测试?,java,android,unit-testing,junit,android-studio,Java,Android,Unit Testing,Junit,Android Studio,我有一个显示“Hello World”的Android项目。它是从Android Studio的“空白活动”模板创建的 然后,我在我的应用程序包中添加/创建一个新的java类(与包含我的活动的包相同)。我称之为Shape并添加了一个简单的构造函数 public class Shape { public Shape(int i){ if (i==0){ throw new IllegalArgumentException("Cant have 0")

我有一个显示“Hello World”的Android项目。它是从Android Studio的“空白活动”模板创建的

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

public class Shape {
    public Shape(int i){
        if (i==0){
            throw new IllegalArgumentException("Cant have 0");
        }
    }
}
太好了。现在我有了一个完全不涉及Android的类,我想对它进行单元测试。接下来我该怎么办

我的问题到此为止。下面我将介绍我尝试过的内容。

请注意,我以前从未在Android或Java中进行过测试。请原谅我犯了“新手”的错误。
  • 在Shape.java中,我转到“导航”>“测试”
  • 点击回车键选择“创建新测试”
  • 获取此弹出窗口,然后选择JUNIT4
  • 然后,我点击修复按钮修复找不到的库
  • 我得到这个弹出窗口
  • 我真的不确定要选择什么,所以我选择默认/突出显示
  • 我写我的测试

    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,17)梯度:错误:包org.junit不存在
    错误:(5,24)梯度:错误:包org.junit不存在
    错误:(8,6)渐变:错误:找不到符号类测试


  • 自从Android Studio 1.1以来,就有了(实验性的)。该页的几句话:

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

    dependencies {
      testCompile 'junit:junit:4.12'
      testCompile "org.mockito:mockito-core:1.9.5"
    }
    
    要在AS中使用单元测试支持,必须执行以下步骤:

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

  • 将必要的测试依赖项添加到app/build.gradle(见上文)

  • 在设置>渐变>实验中启用单元测试功能

  • 同步您的项目

  • 打开“构建变体”工具窗口(在左侧),并将测试工件更改为“单元测试”

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

  • 创建您的测试。您可以通过打开一个类,右键单击其名称并选择“Go to>Test”来完成此操作。添加一些测试 案例
  • 右键单击新的测试类或方法,然后选择“运行…”
  • (可选)您可以直接使用Gradle来减少编译时间。要执行此操作,请转到运行菜单并选择“编辑” 配置”。在那里,找到默认的JUnit模板,删除 在启动步骤之前使用“Make”,并添加一个“Gradle aware Make”步骤 (将任务名称保留为空)
  • 必须知道有两种测试类型:
    androidTest
    和plain
    test

    • androidTest
      主要用于在模拟器或设备上运行的测试,如插装测试。在命令行中,使用
      /gradlew connectedCheck
      运行这些命令
    • test
      用于不希望在设备上运行的测试,例如您编写的单元测试。您可以运行
      /gradlew test
      来运行这些测试
    如引用中所述,您可以通过更改测试工件在Android Studio中的
    androidTest
    test
    之间切换

    当然,最好不要在设备或模拟器上运行测试,因为这会大大加快测试过程。有了新的实验单元测试支持,您可以在不使用设备的情况下访问stubbed Android API。这使您可以将更多的测试从
    androidTest
    移动到
    test
    如今,androidstudio(当前版本1.4)拥有完整的单元测试支持,无需任何变通方法。正如自动生成的ExampleUnitTest中所建议的:

    要处理单元测试,请在buildvariants视图中切换测试工件。


    对于android studio 1.2或更高版本,我提供了这个答案,因为这是谷歌排名第一的产品之一,这是一个关于如何使用android studio设置单元测试的优秀且易于遵循的教程,以下是链接:


    在花了2个小时尝试运行测试后,我终于通过上面的链接完成了测试,希望它对您和我一样有用。

    进入设置,然后进入构建工具,然后进入渐变,然后进入实验。在“实验”中,取消选中“启用所有测试工件”。游戏到此结束

    您似乎在谈论必须在设备上运行的特定于Android的单元测试。甚至在AS和Android for Gradle插件1.1的这一变化之前,我认为您仍然可以在本地机器上运行基本单元测试(没有Android设备)。尽管1.1已经面世,但我觉得我不必启用实验特性来获得简单的java单元测试。我的问题是如何让这些(普通java单元测试)正常工作。你知道如何让它工作吗?在1.1版本之前,我使用了和插件,正是它们实现了这一点。当然,这些插件已经被弃用,取而代之的是新添加的功能。减少JUnit测试执行时间的建议也很棒!干得好!您出色地区分了
    仪器测试
    单元测试
    ,即
    androidTest
    测试
    。谢谢恩哈曼:)@MuhammadBabar断点对我有用<但是,code>android.util.Log不起作用,因为在运行单元测试时没有android环境。为此,您可以使用
    System.out.print*
    方法系列。不再需要切换测试工件