本文将分享AndroidStudio中Junit单元测试使用JSON对象异常的问题的详细内容,并且还将对androidstudiojunit进行详尽解释,此外,我们还将为大家带来关于.net持续集成单
本文将分享Android Studio中Junit单元测试使用JSON对象异常的问题的详细内容,并且还将对android studio junit进行详尽解释,此外,我们还将为大家带来关于.net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境、Android junit 单元测试、Android Studio - Junit 4 - 在所有测试之前运行代码、Android Studio Junit 无法解析的相关知识,希望对你有所帮助。
本文目录一览:- Android Studio中Junit单元测试使用JSON对象异常的问题(android studio junit)
- .net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境
- Android junit 单元测试
- Android Studio - Junit 4 - 在所有测试之前运行代码
- Android Studio Junit 无法解析
Android Studio中Junit单元测试使用JSON对象异常的问题(android studio junit)
Android Studio 2.2中使用本机单元测试时,遇到使用JSONObject代码时抛出异常:
比如:JSONObject jsonObject = new JSONObject(“json字符串”);
报异常:java.lang.RuntimeException: Method put in org.json.JSONObject not mocked. See https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support for details.
但是将测试代码放到设备AndroidTest中,使用JSONObject代码时无异常。
原来,JSON包含在Android SDK中,JUnit单元测试无法使用,会抛异常;但可以在AndroidTest中使用,如果要在Junit中使用,需要在App或Library项目的build.gradle中添加依赖:
testCompile files(‘libs/json.jar’) ---- 注意这里的jar名称是自己的
其实上面异常中google给了链接说明,可惜我大天朝子民已习惯忽略点击那个不可能访问的站点。
.net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境
系列目录
单元测试及测试驱动开发简介
什么是单元测试
单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验。单元测试几乎都是用单元测试框架编写的。单元测试容易编写,能快速运行。单元测试可靠、可读、并且可维护。只要产品代码不发生变化,单元测试的结果是稳定的。
特征:
• 自动化、可重复执行;
• 很容易实现;
• 第二天还有意义;
• 任何人都应该能一键运行它;
• 运行速度应该很快;
• 结果应该是稳定的;
• 能完全控制被测试的单元;
• 完全隔离(独立于其他测试的运行);
单元测试命名
由于单元测试非常强调可读性,因此我们要花些功夫在命名上,要使单元测试方法名简单易懂,基本一下子能看出它的主要功能.如果觉得方法名不能够完全表达出此方法要实现的功能,也可以额外添加注释.推荐的命名方式如下 Should_Return(Throw)_Result(exception)_If(when)But
其中Should表示期待一个结果,Return或者Throw为要测试方法期待的返回结果,If表示出现以上结果需要的条件,But为附加条件.
什么是集成测试
集成测试是对一个工作单元进行的测试,这个测试对被测试的工作单元没有完全的控制,并使用该单元的一个或多个真实依赖物,例如时间,网络、数据库、线程或随机数产生器等。
单元测试与集成测试的区别
单元测试与集成测试最大的区别在于:集成测试依赖于一个或多个真实的模块,当运行集成测试时,出现失败的情况后你并不能立即判断是哪里出了问题,因此找到缺陷的根源会比较困难。
测试驱动开发
传统开发流程
[虚线代表是一个可选的行为]
TDD开发流程
由上面的两个图中可以看出TDD与传统开发模式的区别:先编写一个会失败的测试,然后创建产品代码,并确保这个测试通过,接下来是重构代码或者创建另一个会失败的测试。
单元测试框架作用
单元测试框架是帮助开发人员进行单元测试的代码库和模块。
Nunit单元测试框架使用
NUnit 是一套开源的基于.NET平台的类Xunit白盒测试架构,支持所有的.NET平台。这套架构的特点是开源,使用方便,功能齐全。很适合作为.NET语言开发的产品模块的白盒测试框架。 起初是从流行的Java单元测试框架JUnit直接移植过来的,之后NUnit在设计和可用性上做了极大地改进,和JUnit有了很大的区别,给日新月异的测试框架生态系统注入了新的活力。 如何在VS安装并运行呢?用Nuget是最方便的一种形式了,如下图:
如果各位的visualStudio中安装有Resharper插件,则只需要安装红色部分框选的内容即可,如果没有安装也没有关系,可以使用VisualStudio自带的测试工具也是可以的, 以下讲解用的也是VisualStudio自带的测试工具. 需要注意的是如果使用VisualStudio自带的测试工具,还需要安装Nunit.Console
编写第一个单元测试
我们在刚才新建的项目中添加一个名为FirstUnitTest的项目 我们要引入using NUnit.Framework;方可使用Nunit 我们新建的第一个测试代码如下 其中TestFixture注解标识这个类为单元测试类,如果没有此标识,则此类无法在单元测试工具中运行 方法上的Test注解标注此方法为一个单元测试方法,如果没有Test注解,则此方法在单元测试运行的时候将会被忽略掉 类注解和方法注解添加以后,单元测试就可以跑起来了.
运行第一个单元测试
使用VisualStudio自带单元测试工具运行
如上图示,点击菜单栏的Test(测试)-Windows(窗口)-Test Explorer(测试浏览器)便可以在VisualStudio中打开测试浏览器,只要我们保存了项目,就可以在Test Explorer中看到刚才创建的单元测试了(刚创建的单元测试名为FirstUnitTest) 运行单元测试,我们点击Test Explorer中FirstUnitTest下的测试方法名,出现以下选项
我们点击Run Selected Test(运行选中的单元测试)便可以运行这个单元测试了
运行以后便可以在Test Explorer中看到结果了 单元测试图标含义 单元测试结果很容易根据图标看出来其含义,其中圆圈内一个红色X 号代表测试失败,需要处理,圆圈里一个绿色对勾 代表测试成功,菱形内一个蓝底! 号代表测试结果待定(单元测试没有运行的状态是待定) 除了这几个状态外还有一种状态是三角形内一个黄底感叹号 ,代表警示,后面会介绍这个状态.
单元测试状态查看
通过以上状态我们很清析地看到我们创建的单元测试失败了,我们点击这个单元测试,Test Explorer下面部分便会显示关于这次测试的基本信息 我们从错误信息里可以看到错误原因是期待的结果True,实际上是False.如果测试过程中由于异常导致错误,StackTrace还会显示异常的堆栈信息.
小技巧-快速定位到错误方法:在实际工作中,随意项目的深入,测试方法会越来越多,我们写完一个测试方法后然后点击测试,这样不会有什么问题,然后实际情况是随着测试方法积累越来越多,我们日后要运行单元测试的时候往往是点击整个单元测试项目运行,这时候如果有错误我们虽然可以根据方法名定位到出错的测试方法,然而这样很不方便,我们这时候可以点击错误信息栏里的Source后面的蓝色文字,快速定位到测试出现错误的方法.
很多时候我们只是查看一下这个面板,并不把鼠标移过来点击,更为快捷的定位到错误方法的的方式是我们选中测试方法后,直接按下快捷键F12,就直接进入到错误方法了
上面的面板中展示有错误的信息,如果信息过长时在面板查看很不方便,这时候我们可以把它复制下来然后在自己喜欢的文本查看器中查看
单元测试调试
通过以上状态我们知道我们的单元测试失败了,为什么会失败很简单3+4*5/2不等于0,但是很多时候有些结果不是这么显而易见的,我们需要借助单步调试来发现错误,如何对单元测试进行调试呢? 首先我们像普通调试一样设置一个断点,然后在Test Explorer中右击方法名,出现弹出菜单,这次我们选择Debug Select Tests(调试选择测试)
此时我们会看到像我们普通调试一样,断点被击中
我们可以在断点调试模式发现错误所在. 这里还有一点需要指出的是,单元测试的成功失败状态只是针对本次有效,如果关闭VisualStudio所有的状态又会变成待定状态,需要再次运行测试才会有成功,失败等状态.
使用Resharper运行单元测试
Resharper为VisualStudio的一个插件,集成了很多功能,其中包含单元测试运行功能.如果你的VisualStudio里安装的Resharper插件,也可以使用Resharper来运行单元测试,使用Resharper来进行测试测试比使用VisualStudio自带的单元测试工具更为方便. 如果安装了Resharper,VisualStudio的主菜单里会出现Resharper菜单,执行以下图示操作便可以打开Resharper Unit Test Explorer
窗口和VisualStudio Test Explorer类似
操作也和VisualStudio自带的Test Explorer操作类似,点击刚才新创建的FirstUnitTest类,便会出现以下菜单
选择第一个Run Unit Test便会运行单元测试,点击Debug Unit Tests则会进入单元测试调试模式,和VisualStudio自带的测试工具操作类似.
执行结果状态图标和Visual Studio自带的测试工具状态图标大同小异,很容易区分 一点很大的不同在于它的单元测试信息显示在右边,这样如果面板的宽度过小而错误信息过长就会出现如下图示情况
基本上不可读
我们可以通过如图示设置把它调到下面,这样就和VisualStudio自带的单元测试工具布局基本一样了
同样可以点击蓝色或者青色文字快速导航到错误方法里. 同样,由于面板大小限制,如果错误内容信息过丰富查看起来不是很方便,VisualStudio自带的测试工具可以通过Copy All复制到剪切板,然而这个面板并没有,没有办法把错误记录复制出来吗,答案是有的. 我们右击方法名,便会出现下面一个级联菜单
这里有导出Text,XML和HTML,导出到xml和html基本上不需要,只需要导出为Text即可,点击Export to Text出现如下对话框
如果我们选择一个路径便会将错误导出,很多时候并不需要这么做,我们点击Copy to Clipborard把内容复制到剪辑板,便可以把它复制到自己喜欢的文本编辑器里查看了
Resharper测试技巧-状态过滤
当测试越来越多的时候,我们往往对整个测试项目进行运行,而不是像在开发阶段写一个运行一个,有人可能会有疑问,单元测试写的时候测试通过,以后再测会变成不通过状态吗,答案是肯定的.如果我们的单元测试中包含外部依赖(理想状态下不应该包含),往往外部依赖的变化会导致单元测试结果的变化.另外,单元测试编写的不恰当也会引起测试结果的变化.外部依赖的变化往往由于项目本身原因耦合度太高,一时又无法重构但仍然需要单元测试,这时候也可以勉强为之,然而不恰当的测试代码导致结果的不稳定是需要避免的.(最为常见的是日期中使用DateTime.Now由于Datetime.Now是变化的导致单元测试结果不可预测,这种情况是需要避免的.) 以上穿插的内容只是为了说明特定情况下单元测试的结果是会变的,因此不以为编写完测试方法后运行一遍成功就万事大吉.
如果测试方法很多,运行完以后出现多处错误,此时想要一个个找出失败的单元测试不是很方便,此时我们可以借助Resharper Unit Test Explorer中的测试状态过滤功能来过滤出所有的错误测试.
如上图,我们点击上面工具栏里的错误图标,这时候Explorer里列出的全部都是错误测试. 需要注意的是,由于我们启用的过滤,一旦错误都解决以后,这里便没有错误测试可罗列,这时候这里变成一片空白,我们需要点击一下最左边所有测试图标把所有测试都显示出来
Resharper测试技巧之类内部启用测试
现在的测试还比较少,我们在Test Explorer中找到刚刚编写好的单元测试方法并不是一件很困难的事,但是当Explorer里单元测试方法越来越多的时候,想要快速找到刚编写好的方法启动是一件非常繁琐的事, 我们往往需要把方法名复制下来,然后粘贴到Explorer(这里的Explorer根据语境指的是Resharper Unit Test Explorer或者VisualStudio Test Explorer,并非windows explorer或者其它)里面,启动后还要删除查找内容,如果不删除则其它的方法都无法展示出来了.Resharper提供了一些非常贴心的简便功能,可以直接在类内部直接启动单元测试,而不需要到Explorer里找到测试方法然后运行.
如上图示.当一个方法有了Test注解,Resharper便能感知它,这时候方法的前面出现一个如上图红框框选的阴阳图标 点击图标便会出现以下上下文菜单
点击Run便可以运行测试.
运行成功这时候阴阳图标右下角会有一个绿色小对勾指示测试成功
如果点击类名前面的双阴阳图标则会整个类的所有测试方法进行操作
这时的Run和Debug后面都有一个All字,表示对此类的所有方法运行测试或者调试.
原文出处:https://www.cnblogs.com/tylerzhou/p/11280305.html
Android junit 单元测试
第一步:首先在 AndroidManifest.xml 中加入下面红色代码 :Android Studio - Junit 4 - 在所有测试之前运行代码
如何解决Android Studio - Junit 4 - 在所有测试之前运行代码?
我有一个应用程序,每当打开该应用程序时,我想强制执行 locale
。所以我将在应用程序的 Locale.setDefault(myCountryLocale).
方法中使用 onCreate()
单元测试不会启动该类,因此我希望能够在启动测试时设置相同的语言环境。通过扩展程序或 gradle 脚本来设置语言环境,以便在运行它们的人使用其他语言环境时测试不会失败。
解决方法
您可以使用 JUnit 的 TestSuite 来实现这一点。
package com.dinkar.test.sample;
import com.dinkar.test.sample.TestA;
import com.dinkar.test.sample.TestB;
import com.dinkar.test.sample.TestC;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
import java.util.Locale;
/**
* @author dinkark on 29/04/20.
*
*/
@RunWith(Suite.class)
@SuiteClasses({TestA.class,TestB.class,TestC.class})
public class TestSuite {
@BeforeClass
public static void setUp() {
System.out.println("set config required by all the test cases");
System.out.println("This will only run once for all the test case included in TestA,TestB,TestC");
Locale.setDefault(myCountryLocale);// set your locale
}
@AfterClass
public static void tearDown() {
System.out.println("clean up");
System.out.println("This will also run once only for all the test case included in TestA,TestC");
}
}
Android Studio Junit 无法解析
刚开始做Android就碰到困难,笔者直接创建AS自带的小示例,里面有用到junit 4.12版本,但控制台错误显示:Failed to resolve: junit:junit:4.12,虽然找到解决方法,但是并不完美,其中也有不懂的地方,算是先做个笔记吧,希望论坛高手看到能解答一下,非常感谢。
遗留问题整理:
- 新建或导入项目后,发现依赖jar包不存在出错,如何将jar包放入 Library Dependency的Choose Library Dependency下拉列表中?(这个问题尚未解决)
解决方法一:
当前引用的是gradle 26.0.0版本。
先贴一下build.gradle文件,最后一行可以看到已经添加了依赖。
apply plugin: ''com.android.application''
android {
compileSdkVersion 25
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
compile ''com.android.support:appcompat-v7:25.3.1''
compile ''com.android.support:design:25.3.1''
compile ''com.android.support:support-vector-drawable:25.3.1''
testCompile ''junit:junit:4.12''
}
再看一下Project Structure,此处看到已经引用,但是。。居然不能编辑,那如何知道它是否引用正确?只能添加或删除是几个意思。
点击添加,可以看到列表中并没有junit的jar包。想知道如何将jar包文件编辑到下面列表中?
接下来,我们去找一下列表中的jar包所在位置,看看是不是这个目录下面没有的原因,但是我发现这个目录引用的好像很繁琐,指向好多的地方,有部分jar包我也搞不懂放在哪个路径,就更搞不懂如何在下拉列表中添加Junit项了。。。。以下是查到的部分jar位置信息,均带有版本号
主目录:盘符忽略\android-sdk-windows\extras下
次级目录:
android 目录对应 com.android.support 前缀jar包
google 目录对应 com.google.android 前缀jar包
从Joda-time开始,居然找不到了。。找不到就算了,那我添加试试看,不好意思,失败。
度娘后,发现大部分采用的是指定一个maven中央仓库地址,同步后,jar包会下载到指定目录下,这个目录大家可以自定义,在Setting -> Build -> Gradle进行指定,可以设置全局的仓库位置,也可以根据Project进行设置,最下面那行引用就别管了吧。
apply plugin: ''com.android.application''
android {
compileSdkVersion 25
buildToolsVersion "26.0.0"
repositories {
maven { url ''http://repo1.maven.org/maven2'' }
}
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
compile fileTree(include: [''*.jar''], dir: ''libs'')
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
compile ''com.android.support:appcompat-v7:25.3.1''
compile ''com.android.support:design:25.3.1''
compile ''com.android.support:support-vector-drawable:25.3.1''
testCompile ''junit:junit:4.12''
}
解决方法二:
如何将jar包放入 Library Dependency的Choose Library Dependency下拉列表中?
关于Android Studio中Junit单元测试使用JSON对象异常的问题和android studio junit的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境、Android junit 单元测试、Android Studio - Junit 4 - 在所有测试之前运行代码、Android Studio Junit 无法解析的相关知识,请在本站寻找。
本文标签: