android的junit单元测试
‘壹’ android studio1.5.1怎么做单元测试
在Android Studio中可以进行单元测试
很多的文章指导你应该在“build.gradle” 文件里面添加几行代码从而允许单元测试,并且告诉你应该在项目依赖中添加Android测试库。
其实你并不需要按照这种错误的方式去做,因为这是完全没有必要的。
Android Studio本身就支持Android单元测试,你只需要在你的项目中配置一下就可以了。
注意:还有好几种广受欢迎的Android单元测试框架,比如Robolectric,它们比我在这里提到的需要更多的配置,我希望在未来可以以这个题目再写一些指导文章。
创建你的单元测试文件夹
我喜欢把单元测试放在我的主项目里面,比如“com.mypath.tests.” ,你可以把测试目录放到你想要的地方。开始之前,像下面这样,先创建你的测试文件夹。(译者注:这一步不是必须的,你也可以把单元测试类创建在与Android Studio默认的ApplicationTest类相同的路径下面)
接下来,创建一个叫做 “ExampleTest”的类,注意要继承自InstrumentationTestCase类
然后可以添加一个简单的测试代码,我们知道这段代码肯定会运行失败
public class ExampleTest extends InstrumentationTestCase {
public void test() throws Exception {
final int expected = 1;
final int reality = 5;
assertEquals(expected, reality);
}
}1234567
注意:所有的测试方法必须以”test”开头,这样Android Studio才能自动的找到所有你想要进行单元测试的方法。
为你的项目配置单元测试
现在我们已经有了一个会运行失败的测试单元,我们必须把它run起来。
首先点击”Run-> Edit Configurations”
然后点击“+”从左边弹出的列表里,选择添加一个 Android Tests,然后你可以在右上角给它改名为你想要的名字。
然后就会创建一下像下面这样的测试项目配置
从下拉菜单中选择你当前的mole
接下来,选择”All in Package”选项,然后把你的刚才创建的测试文件夹选中。你也可以选择“All in Mole”选项,这样Android Studio会自动的找到你整个Mole中的所有测试单元,你也可以通过另外的选项,指定某一个类甚至是测试方法。
做完这一切之后,看起来应该像下面这样
我也喜欢选中下面的“Show chooser dialog”,这样当每次运行的时候,我可以指定如何去运行
现在点击”Apply”然后关闭,你现在应该可以看到你的测试案例已经作为一个可以运行的项目配置在Android Studio上面的工具栏上了
运行我们的单元测试
我使用Genymotion来完成所有的事情,所以开启你的Genymotion然后运行test
在assertion这一行添加一个断点,然后点击 “run debug mode”,目的是为了证明Android Studio确实执行了我们的单元测试。
当你开始你的测试工程之后,你会看到一个叫做“Running Tests…”的显示窗口
当你的测试没有通过,点击“Logcat”然后查看综合的输出结果,看下我们测试失败的原因
通过控制台,你会发现给出的错误理由应该是
“junit.framework.AssertionFailedError: expected:<1> but was:<5>”1
‘贰’ Android Junit Test测试原理
我也在弄这个啊,android的单元测试是要把测试的目标apk和编译出来的那个测试apk都要安装上才可以测试的啊,你这不用模拟器在么测试啊,那就只能是在真机上面测试了啊,测试程序会调用你的被测试的程序代码的,你如果不信可以打log看看啊。
‘叁’ 如何在Android中利用Instrumentation来进行测试
Android单元测试是通过junit框架来测试的。Android中建立JUnit测试环境有以下方法。集成步骤:1.在androidManifest.xml文件中添加以下代码:2.新建一个测试测试类并继承AndroidTestCase类,编写测试方法,在测试方法内使用断言assert来测试要测试的方法。3.点击右面的大纲视图,选择要测试的方法,右键,runas--->AndroidJUnittest。
‘肆’ android 单元测试用例怎么写
首先我们需要先下载相应的 JUnit 相关的 JAR 包,下载的过程可以去 JUnit 的官方网站,也可以直接通过 Maven 资源仓库来完成。
使用简单的 @Test 注解实现我们的测试方法的编写和执行
准备工作做好之后,接下来我们就可以开始尝试编写壹个简单的测试代码了。首先,我们编写了壹个 Calculator 类,并提供五个方法分别完成加减乘除以及求平方的运算。代码如下:
package net.oschina.rrfhoinn.main;
public class Calculator {
public void add(int n){
result += n;
}
public void substract(int n){
result -= n;
}
public void multiply(int n){
result *= n;
}
public void divide(int n){
result /= n;
}
public void square(int n){
result = n * n;
}
public int getReuslt(){
return result;
}
public void clear(){
result = 0;
}
private static int result;
}
‘伍’ Android Studio的两种单元测试:Androud单元测试和Junit单元测试有什么区别
测试环境都是依赖于某一个环境的,junit就是和main函数一样,没有什么环境依赖直接运行,安卓单元测试的话无非也是测试某些函数,测试接口是否正常,那么就可以用到 mockito这个框架,也就是说可以模拟一些平时不好debug的情况 例如
DbConnect conn = mock(DbConnect);
when(conn.query(anyInt())).thenReturn("{json数据或者其他}");
这样我们就能够比较科学的测试我们想要的函数行为是否正常了,贴一个我的博客链接,你可以直接点mockito官网 网页链接也可以看看我的blog哦网页链接
‘陆’ android junit单元测试怎么获得context
package com.test.hellojunit;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
‘柒’ android junit测试用例怎么写
JUnit 基本原理
一个 JUnit 测试包含以下元素:
测试用例组成
开发代码部分 测试代码部分 测试工具部分
待测试类 A 通过扩展 TestCase 或者构造 TestSuit 方法
编写测试类 B 一个测试运行器(TestRunner)R,可以选择图形界面或文本界面
操作步骤:
将 B 通过命令行方式或图形界面选择方式传递给 R,R 自动运行测试,并显示结果。
首先看下junit测试类库和android中单元测试类库:
SDK 功能说明
junit.framework JUnit测试框架
junit.runner 实用工具类支持JUnit测试框架
android.test Android 对JUnit测试框架的扩展包
android.test.mock Android的一些辅助类
android.test.suitebuilder 实用工具类,支持类的测试运行
在这些包中最为重要的是: junit.framework、 android.test,其中前者是JUnit的核心包,后者是Andoid SDK在Junit.framework的基础上扩展出来的包。
‘捌’ android studio怎么用junit
在java开发中使用junit进行单元测试是常有的事,那么android中呢?答案是肯定的,也可以!
使用方式也非常的简单,只需要在AndroidManifest.xml几加入两行配置,然后写个一类继承AndroidTestCase类即可,其它的跟java使用junit是一样的(比如http://www.tiecou.com)。
AndroidManifest.xml示例代码:
<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.javake.hzy.filesave"
android:versionCode="1"
android:versionName="1.0">
<uses-sdkandroid:minSdkVersion="8"/>
<!--junit测试配置关键配置第一处-->
<instrumentationandroid:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.javake.hzy.filesave"android:label="myapptest"/>
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<!--junit测试配置关键配置第二处-->
<uses-libraryandroid:name="android.test.runner"/>
<activityandroid:name=".FileSave"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
单元测试类示例代码:
packagecom.javake.hzy.filesave;
importjava.io.FileOutputStream;
importandroid.content.Context;
importandroid.test.AndroidTestCase;
/**
*测试类用于测试文件读写相关操作
*单元测试只需要继承AndroidTestCase类
*测试方法前用test做为前缀即可
*测试时右键runas弹出菜单中选择AndroidJUnitTest
*@authorhzy
*
*/
{
/**
*测试方法1,创建文件并写入字符串
*/
publicvoidtest01(){
Contextcontext=this.getContext();
System.out.println(context);
try{
FileOutputStreamout=context.openFileOutput("hello.txt",Context.MODE_PRIVATE);
out.write("helloworldmynameishzy".getBytes());
out.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}
‘玖’ as中android junit单元测试怎么用
进行Android单元测试 Menifest.xml中加入: <application>中加入: <uses-library android:name="android.test.runner" /> <application>外面加入: <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="name.feisky.android.test" android:label="Test for my app"/> 编写单元测试代码:必须继承自AndroidTestCase类 package name.feisky.android.test; import android.test.AndroidTestCase; import junit.framework.Assert; public class MyTest extends AndroidTestCase { private static final String Tag="MyTest"; public void testSave() throws Throwable { int i=4+8; Assert.assertEquals(5,i); } public void testSomethingElse() throws Throwable { Assert.assertTrue(1 + 1 == 12); } } 执行测试 IntelliJ中: eclipse中:右键 run as Android JUnit Test 命令行工具: adb shell am instrument -w name.feisky.android.test/android.test.InstrumentationTestRunner 也可以新建一个测试项目进行测试 New > Project > Android > Android Test Project. 添加测试用例类 添加新类,基类设置为android.test.<HelloAndroid> 添加构造函数 添加setUp()方法,这个方法在所有的测试之前进行变量和测试环境的初始化。 @Override protected void setUp() throws Exception { super.setUp(); mActivity = this.getActivity(); mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview); resourceString = mActivity.getString(com.example.helloandroid.R.string.hello); } 添加testPreconditions()方法,检查初始化环境,只执行一次 public void testPreconditions() { assertNotNull(mView); } 添加单元测试 public void testText() { assertEquals(resourceString,(String)mView.getText()); } 测试 Run As... > Android JUnit Test