java中使用junit测试
最初写代码只要功能走通就不管了,然后如果出了什么问题再去修改,这是因为没做测试的工作。测试其实很简单。
1.准备
当前使用idea编写代码,用maven构建工程,使用maven的test功能来进行批量测试。测试工具为junit。
2.编写功能代码
将主要的业务功能的代码完成。
public interface Sender {
public void send();
}
public class MailSender implements Sender {
@Override
public void send() {
System.out.println("This is emailSender!");
}
}
public class SmsSender implements Sender {
@Override
public void send() {
System.out.println("This is SmsSender!!");
}
}
public class SendFactory { public Sender produce(String type){
if("email".equals(type)){
return new MailSender();
}
if ("sms".equals(type)){
return new SmsSender();
}
System.out.println("输入类型不正确!");
return null;
}
}
3.编写测试用例
在需要测试的类里,按快捷键:ctrl+shif+t,创建一个test用例,可以选择要测试的方法。
4.使用注解
测试的功能模块一般都会有准备环境和结束行为。在junit里,使用注解@Before,@After编写前后的代码,@Test里面就是测试内容。
package com.test.java.designPattern.factory; import junit.framework.TestResult;
import junit.framework.TestSuite;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import static org.junit.Assert.*; /**
* Created by mrf on 2016/2/25.
*/
public class SendFactoryTest { protected long startTime;
protected long endTime; @Before
public void setUp() throws Exception {
this.startTime= System.currentTimeMillis();
System.out.println("=========开始测试===========");
} @After
public void tearDown() throws Exception {
this.endTime = System.currentTimeMillis();
System.out.println("测试用时:"+(endTime-startTime));
System.out.println("=========测试结束===========");
} @Test
public void testProduce() throws Exception {
SendFactory sendFactory = new SendFactory();
Sender sender = sendFactory.produce("email");
sender.send();
} @Test
public void testM(){
System.out.println(12);
} }
5.注意
maven测试一般文件位于test/java下对应的包下的的测试类,类名为要测试的类名+Test,要测试的方法为test+要测试的方法名。如上。
6.运行maven的test或install自动执行测试
可以直接在方法名上右键运行,也可以在maven中test或install。
如果光标位于方法体内,右键会出现运行这个测试方法,将光标移出方法,右键直接运行test用例,会运行所有@Test注解下的方法。
maven的test或install则直接测试所有的方法。
=========开始测试===========
Disconnected from the target VM, address: '127.0.0.1:6678', transport: 'socket'
This is emailSender!
测试用时:2
=========测试结束===========
=========开始测试===========
12
测试用时:0
=========测试结束===========
7.Assert
Junit4提供了一个Assert类(虽然package不同,但是大致差不多)。Assert类中定义了很多静态方法来进行断言。列表如下:
- assertTrue(String message, boolean condition) 要求condition == true
- assertFalse(String message, boolean condition) 要求condition == false
- fail(String message) 必然失败,同样要求代码不可达
- assertEquals(String message, XXX expected,XXX actual) 要求expected.equals(actual)
- assertArrayEquals(String message, XXX[] expecteds,XXX [] actuals) 要求expected.equalsArray(actual)
- assertNotNull(String message, Object object) 要求object!=null
- assertNull(String message, Object object) 要求object==null
- assertSame(String message, Object expected, Object actual) 要求expected == actual
- assertNotSame(String message, Object unexpected,Object actual) 要求expected != actual
- assertThat(String reason, T actual, Matcher matcher) 要求matcher.matches(actual) == true
java中使用junit测试的更多相关文章
- Java进阶(五)Junit测试
我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的.但是,我们同时应该确保每一个函数 ...
- Javaspring+mybit+maven中实现Junit测试类
在一个Javaspring+mybit+maven框架中,增加Junit测试类. 在测试类中遇到的一些问题,利用spring 框架时,里面已经有保密security+JWT设定的场合,在你的secur ...
- 在命令行中运行JUnit测试
可以在Eclipse之外运行JUnit测试,使用org.junit.runner.JUnitCore类. 这个类提供了runClasses()方法,它允许运行一个或多个测试类.runClasses() ...
- Android中的Junit测试
在开发中Junit测试可以很方便的帮助开者尽可能早的发现并处理问题,而且使用也非常简单,只需要导入Junit测试相关的jar包并创建测试类,就可以对业务功能进行测试,而不用为了测试在代码中添加输出语句 ...
- Java中调试与测试常用方法
一.断言 1.概述 根据之前的条件来对后续的结果进行预判. 2.在Java中,断言默认是不开启的,需要手动进行开启,只需添加参数-ea(enable assert的意思) 开启步骤: 选中项目路径,鼠 ...
- java错误分析之junit测试错误(实验一)
本文转自:https://www.cnblogs.com/anny0404/p/5275595.html 在原作者的基础上进行部分添加,也很感谢原作者这篇博文,帮我分析与解决问题! 原文: 下载了最新 ...
- 【IDEA】单元测试:项目中引入JUnit测试框架+Mock简单了解
一.Junit 使用和说明: 参考:单元测试第三弹--使用JUnit进行单元测试-HollisChuang's Blog http://www.hollischuang.com/archives/17 ...
- IDEA中的JUNIT测试
安装插件 Ctrl+Alt+s→Plugins→junitgenerator v2.0 Alt+insert 选中JUnit test 中JUnit4 package test.com.demo.co ...
- Java中的Junit单元测试
测试方法必须使用@Test进行修饰 测试方法必须使用public void 进行修饰,不能带任何的参数 新建一个源代码目录来存放我们的测试代码 测试类的包名应该和被测试类的包名一致 测试单元中的每个方 ...
随机推荐
- ZabbixCPU温度监视-windows2008R2
1, speed-fan安装 SpeedFan - Access temperature sensor in your computer / http://www.almico.com/speedfa ...
- go程序注册为windows服务
cmd下运行:nssm install 服务名 go打包好的exe文件 nssm下载地址:http://nssm.cc/,将下载好nssm.exe放到/windows/system32文件夹下
- 在Nifi 里 把 HDFS Json 为csv 格式
import org.apache.commons.io.IOUtilsimport java.nio.charset.*import java.text.SimpleDateFormatimport ...
- Linux 网络编程(UDP)
客户端代码 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/sock ...
- C#中的线程一(委托中的异步)
C#中的线程一(委托中的异步) 一.同步委托 我们平时所用的委托以同步居多,我们编写一个方法和相关委托进行演示: publicdelegatevoid DoSomethingDelegate(stri ...
- 基于正则的INI读写工具类,支持加密解密
看到这个标题,有人会问,现在都用xml做配置文件了,谁还用INI文件啊!下面来简单对比一下xml和ini: 1.XML功能强大表达能力强,同时扩展性好. 2.它的主要优势是异构平台的整合.通讯. 3. ...
- [HIMCM暑期班]第1课:概述
作为这个系列的开始,我会把每一节课上过的内容,与同学们互动后发现他们的闪光点记录下来,以后其他要准备该比赛的人借鉴和参考. 第一节课是概述,主要讲什么是数学建模,还有建模可以帮助我们做什么.举了三个例 ...
- IOS 多线程02-pthread 、 NSThread 、GCD 、NSOperationQueue、NSRunLoop
注:本人是翻译过来,并且加上本人的一点见解. 要点: 1.前言 2.pthread 3.NSThread 4.Grand Central Dispatch(GCD) 5.Operation Queue ...
- svn add 添加到版本库
转 svn add-添加到版本库 常用操作1.添加一个文件到工作拷贝:$ svn add foo.c 2.当添加一个目录,svn add缺省的行为方式是递归的:$ svn add testdir 3. ...
- atitit.事件驱动的总结attilax
atitit.事件驱动的总结attilax Keyboard 基于的的ed 与 mouse 基础的ed Kb base on focus .... Mouse base on mouse mo ...