测试有很多种,不仅仅是手动测试,往往还要用到所谓“自动化测试”,其实我的理解也就是自己写个程序去测试。
而运行这个方法也不需要直接用main函数作为入口地址,只需要选择该方法,点击右键Run as->Junit test 或Debug as->Junit test。即可运行该单元测试方法,运行的结果是直接在服务器上创建一个任务,如下图所示:
最近在公司实习,用到自动化测试,因为程序都是用java编写的,所以我也用java编写单元测试程序。一般都在java中已经导入junit
import junit.framework.TestCase;
但是我看老大给我的例程都没与引入这个类,而是引入了
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
然后,老大叫我根据他给的例程自己去创建单元测试程序,然后运行,创建实际的任务。
创建任务,看似不是很难,但仍要花点时间去了解Junit是怎么样的,所以我需要先了解一下。
首先这也是一个类,和其他java的类一样,无非引入了Junit的类,然后我就发现了这个类并没有显式的写出自己的构造方法,而是只有一些看似比较常见对于字符串操作的方法。
唯一不同的是它在每一个方法前都有一个注解。就和前面import的东西一样,有@after,@Before,@Test。
那么这些注解就是单元测试的关键了:
你要在方法的前面使用
@Test标注,以表明这是一个测试方法;用
@Before来标注它“在任何一个测试执行之前必须执行的代码 ;在这种测试函数的前面加上
@Ignore 标注,这个标注的含义就是 “ 某些方法尚未完成,暂不参与此次测试;
那么最最简单实现单元测试花其实只要做两步就可以测试程序了:初始化,测试。而测试的代码放在@Test标注的方法内即可。如图所示,就是一段单元测试的代码:
public void creatAAC_Task() throws DocumentException {
// String[] sampleratelist = { "24000", "32000", "44100", "48000" };
String[] sampleratelist = { "24000" };
for (int j = 0; j < sampleratelist.length; j++) {
TaskPara model = new TaskPara();
model.setTaskName("AAC_" + sampleratelist[j]);
//model.setVideoCodec("h264");
model.setVideoProfile("Main");
model.setAudioCodec("aac");
//model.setAudioProfile("LC");
model.setSamplerate(sampleratelist[j]);
String content = taskcaseAPIs.createTaskXML(model);
String xmlString = arcvideo.addNewTask(content);
assertTrue(!xmlString.contains("<errors>"));
//compare(e://xml2.xml);
String taskID = taskAPIs.getTaskID(xmlString);
String delXML = arcvideo.deleteTask(taskID);
assertTrue(delXML.contains("<success></success>"));
}
}
而运行这个方法也不需要直接用main函数作为入口地址,只需要选择该方法,点击右键Run as->Junit test 或Debug as->Junit test。即可运行该单元测试方法,运行的结果是直接在服务器上创建一个任务,如下图所示:
那么任务就已经被创建好了。而任务的名称就是方法里输出任务的字符串。
这就是一个简单的单元测试。