Java 如何在Android Studio 1.1中运行简单的JUnit4测试?
我有一个显示“Hello World”的Android项目。它是从Android Studio的“空白活动”模板创建的 然后,我在我的应用程序包中添加/创建一个新的java类(与包含我的活动的包相同)。我称之为Shape并添加了一个简单的构造函数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")
public class Shape {
public Shape(int i){
if (i==0){
throw new IllegalArgumentException("Cant have 0");
}
}
}
太好了。现在我有了一个完全不涉及Android的类,我想对它进行单元测试。接下来我该怎么办
我的问题到此为止。下面我将介绍我尝试过的内容。
请注意,我以前从未在Android或Java中进行过测试。请原谅我犯了“新手”的错误。
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);
}
}
错误:(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中使用单元测试支持,必须执行以下步骤:
androidTest
和plaintest
主要用于在模拟器或设备上运行的测试,如插装测试。在命令行中,使用androidTest
运行这些命令/gradlew connectedCheck
用于不希望在设备上运行的测试,例如您编写的单元测试。您可以运行test
来运行这些测试/gradlew test
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*
方法系列。不再需要切换测试工件