符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
在软件开发过程中,每个单元的运行都是非常关键的,并且直接关系到后期程序员的运行。那么在进行软件开发过程中,经常使用到的单元测试方法有哪些呢,一个好的单元测试是如何进行实现的?下面云南电脑培训为大家介绍进行Java单元测试的具体方法。
创新互联公司主营永和网站建设的网络公司,主营网站建设方案,成都app开发,永和h5小程序制作搭建,永和网站营销推广欢迎永和等地区企业咨询
1、使用框架进行单元测试
Java能够提供单元测试方法的框架,在测试过程中,测试NG和JUnit是现在流行的测试框架。JUnit和TestNG框架测试有几个重要功能:设置和运行很容易;允许忽略或分组,并一起运行多个测试;支持参数化测试,并且云南IT培训发现能够通过在运行时指定不同的值来执行单元测试。
2、谨慎使用测试驱动开发
测试驱动开发是一个软件开发的过程。在整个开发过程中,在开始编码的时候,应该根据程序的需求进行编程测试。但是昆明IT培训发现由于这个时候还没有进行编程,所以初次测试会面临失败,只需要写入少量的代码就能通过测试,进行重置代码。
3、测试代码的覆盖率
代码覆盖率是以百分比测定执行单元测试时进行的代码量。通常,高覆盖率的代码包含未被检测出的错误的概率较低,因为更多的源代码在测试中被执行。测试代码覆盖率的工具有:Clover,Corbetura,JaCoCo。使用工具测试能够更好的提高测试质量。
4、将测试数据外部优化
在JUnit4之前,测试用例执行的数据必须被测试用例硬编码,这会引起限制。为了使用不同的数据执行测试,必须修正测试用例代码。但是,昆明电脑培训认为JUnit4以及TestNG支持外部化测试数据,无需变更源代码,就可以对不同的数据组执行测试用例。
可以通过junit单元测试来测试代码,如:
package cn.zifangsky.test.jms;
import java.util.List;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.zifangsky.activemq.producer.CheckIPSender;
import cn.zifangsky.activemq.producer.WeatherUpdateSender;
import cn.zifangsky.manager.ProxyIpManager;
import cn.zifangsky.mapper.WeatherStationMapper;
import cn.zifangsky.model.ProxyIp;
import cn.zifangsky.model.bo.ProxyIpBO;
import cn.zifangsky.model.bo.ProxyIpBO.CheckIPType;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:context/context.xml","classpath:context/context_activemq.xml"})
public class TestQueue {
@Value("${activemq.queue.checkIP}")
private String checkIPQueueName;
@Resource(name="checkIPSender")
private CheckIPSender checkIPSender;
@Resource(name="proxyIpManager")
private ProxyIpManager proxyIpManager;
@Value("${activemq.queue.weather}")
private String weatherQueueName;
@Resource(name="weatherUpdateSender")
private WeatherUpdateSender weatherUpdateSender;
@Autowired
WeatherStationMapper weatherStationMapper;
@Test
public void testSend(){
//1 查询数据库中所有代理IP
ListProxyIp list = proxyIpManager.selectAll();
if(list != null list.size() 0){
//2 遍历并检测其可用性
for(ProxyIp proxyIp : list){
ProxyIpBO proxyIpBO = new ProxyIpBO();
proxyIpBO.setId(proxyIp.getId());
proxyIpBO.setIp(proxyIp.getIp());
proxyIpBO.setPort(proxyIp.getPort());
proxyIpBO.setType(proxyIp.getType());
proxyIpBO.setAddr(proxyIp.getAddr());
proxyIpBO.setUsed(proxyIp.getUsed());
proxyIpBO.setOther(proxyIp.getOther());
proxyIpBO.setCheckType(CheckIPType.UPDATE);
//3 添加到队列中
checkIPSender.send(checkIPQueueName, proxyIpBO);
break;
}
}
}
}
你这说的太笼统了,应该具体些。
有了Java代码之后
1、可以在代码中写些测试的方法,把你想要验证的东西,输出看一下。
2、可以用Debug的形式,跟踪代码执行,验证程序的逻辑是否正确。
3、利用JUnit写断言,测试结果
1、Jasmine
Jasmine是一个行为驱动的测试开发框架,用于对JavaScript代码进行测试。它不依赖其它任何JavaScript框架,也不需要DOM。它的语法简洁、明确,写测试非常容易。
2、Mocha
Mocha是一个功能丰富的JavaScript测试框架,既运行于Node.js环境中,也可以运行于浏览器环境中。Mocha以串行方式运行测试,能做出灵活而准确的报告,也能将测试中未捕捉的异常映射到正确的测试用例。
3、Chai
Chai是个支持BDD/TDD的库,可用于node和浏览器,可配合任何JavaScript测试框架使用。
4、QUnit
QUnit是个功能强大又易于使用的JavaScript单元测试框架。jQuery、jQueryUI和jQueyMobile项目都使用这个框架,它能测试普通的JavaScript代码。
5、Sinon
Sinon.JS为JavaScript提供了独立的spies、stubs和mocks[译者注:Spy、Stub和Mock都是测试专用名词,Stub常被翻译为桩,spies是Spy的复数形式,是一种可以监视方法、调用和参数的技术]。它不依赖任何东西,可以配合任何单元测试框架工作。
6、Karma
Karma是针对连通浏览器的一个框架无关测试运行器。每一个测试结果对应每个浏览器,它的测试和显示都是通过命令行暴露给开发者的,这样他们就可以看到浏览器测试的通过或失败。
7、Selenium
Selenium有一个简单的目标:就是自动化浏览器。它主要用于自动化测试web应用程序,但是只是很简单地考虑到了基于网络的管理任务。
8、WebdriverIO
WebdriverIO允许用户仅添加几行代码就可以控制浏览器或移动应用程序,使测试代码更简单、简洁、易读。集成的TestRunner同样允许你以同步的方式调用异步命令,这样你不需要关心如何处理Promise以避免竞态条件。此外,它取消了所有的繁琐的设置工作,并且会为您管理的Selenium会话。
9、Nightwatch
Nightwatch.js是一个易于使用的Node.js,它是为基于浏览器的app和网站设计的终端到终端(E2E)的测试方法。它使用强大的W3CWebDriverAPI,用于在DOM元素上执行命令和断言。
10、PhantomCSS
PhantomCSS获得CasperJS捕获的屏幕截图,并使用Resemble.js将其与基准图进行对比,以测试RGB像素差异。java课程发现PhantomCSS然后生成图像差异对比,用于帮助您找到原因。
11、PhantomFlow
PhantomFlow使用决策树提供UI测试方案。针对PhantomJS,CasperJS和PhantomCSS的NodeJS包装器——PhantomFlow能够流畅地在代码中描述用户流程,同时生成用于可视化的结构化树数据。