Android Studio中关于Java的单元测试

来源:互联网 发布:一个淘宝号最多刷几单 编辑:程序博客网 时间:2024/06/07 15:06

Android Studio中
我们新建的项目中结构如下:
这里写图片描述

都知道我们常在java文件夹下的第一个(无括号后缀)包下开发,但是后两个是干嘛的额?
其实后两个是预留的单元测试的包,studio为我们自动创建了。
androidTest的标志是附带AndroidSDK的测试用例,也就是android相关的测试。
test则是纯java的测试,并且测试用例,模板也可以自动生成的。

test包下的jvm测试用例

首先需要在开发的module下依赖单元测试的jar(module的build.gradle下,注意非项目的build.gradle)

dependencies {    testCompile 'junit:junit:4.12'}

从图中可以看到我们在日常开发的包下新建了JunitDemo类,其中只有个add的方法。

如果不用Junit测试我们就需要打个log把整个项目运行一下在log中看结果,费时也费力。使用Junit的断言测试可以很方便:

1、右键类JunitDemo或者在类中代码区随便右键弹出如图示:
这里写图片描述

2、点击Test–》create new Test:

这里写图片描述

解释下Junit依赖后同步下,这里会是有Junit的选项的,以为我们以来的Junit的测试就选择Junit,类名test后缀就不要动了,Generate里的是Junit的部分注解,@Before,@After根据需要选择是否自动生成。
Member就是你要测试的方法体,需要哪个勾选即可。附:Junit常用注解:

  • @BeforeClass 类初始化全局资源使用
  • @Before 每个用例前都会调用的方法
  • @AfterClass 类最后的善后工作,比如数据库关闭操作
  • @After 与Before对应 每个用例后调用
  • @Test 标明测试方法
  • @Ignore 暂时忽略的方法(最好不用,忘记了就真的忘记了)
  • @RunWith 测试环境,默认@RunWith(Junit4.class)运行测试

BeforeClass和Before的区别:@BeforeClass 方法体为public static void 声明,全局只运行一次,用在关联类的初始化资源方面,比如数据库的DBhelper或者OkHttp的实例化等,@Before 声明为public void,不一定执行一次,你如我从数据库中取出了一条数据a,接下来我要对这条数据原版进行修改1和修改2,分别得到自己的结果,那么就可以在@Before里取出数据,在相应的Test里对此数据做相应的操作 ,得到相应的结果。同理@AfterClass和@After类似。

3、确定后就出现这个界面,与androidTest和test文件夹一一对应:
这里写图片描述

因为我们测试的是jvm的就选择第二个即可,确定后发现test文件夹下多了个测试的类,而且方法与我们JunitDemo的方法名一样,只不过方法返回void:

这里写图片描述

4、测试断言我们这样写:

这里写图片描述

我们可以发现,测试体系走得还是实例化目标测试类–》调用断言判定方法。这里我们故意写了个错误的值来对比,运行我们写的单元测试代码,结果如下:
这里写图片描述

可以看到预期3结果5 测试未通过。并爆出了位置信息等。点击Click to see还可以对比。

以上就是Android Studio中关于Junit的单元测试。

原创粉丝点击