Cobertura 通过被测试的行数和被测试的分支数来计算覆盖率。第一次测试时,两种测试方法之间的差别并不是很重要。Cobertura 还为类计算平均 McCabe 复杂度.
并不总是可以得到完美的、100% 的代码覆盖率。有时您会发现,不管对代码如何改造,仍然有一些行、方法、甚至是整个类是测试不到的。下面是您可能会遇到的挑战的一些例子:
* 只在特定平台上执行的代码。例如,在一个设计良好的 GUI 应用程序中,添加一个 Exit 菜单项的代码可以在 Windows PC 上运行,但它不能在 Mac 机上运行。
* 捕获不会发生的异常的 catch 语句,比如在从 ByteArrayInputStream 进行读取操作时抛出的 IOException。
* 非公共类中的一些方法,它们永远也不会被实际调用,只是为了满足某个接口契约而必须实现。
* 处理虚拟机 bug 的代码块,比如说,不能识别 UTF-8 编码。
考虑到上面这些以及类似的情况,我认为一些极限程序员自动删除所有未测试代码的做法是不切实际的,并且可能具有一定的讽刺性。不能总是获得绝对完美的测试覆盖率并不意味着就不会有更好的覆盖率。
然而,比执行不到的语句和方法更常见的是残留代码,它不再有任何作用,并且从代码基中去掉这些代码也不会产生任何影响。有时可以通过使用反射来访问私有成员这样的怪招来测试未测试的代码。还可以为未测试的、包保护(package-protected)的代码来编写测试代码,将测试类放到将要测试的类所在那个包中。但最好不要这样做。所有不能通过发布的(公共的和受保护的)接口访问的代码都应删除。执行不到的代码不应当成为代码基的一部分。代码基越小,它就越容易被理解和维护。
一.环境:
1.将Cobertura.jar文件放置到Jboss的X:\jboss-4.0.5.GA\server\default\lib目录下
2.由于我们将Test类也加入了Cobertura的Instrument所以在运行Test类时需要Cobertura支持,将cobertura.jar放到工程中
3.运行库在X:\Cobertura\1.9下
注意:会话Bean的远程和本地接口必需加上接口名
例如:
@Stateless
@Remote(AdministratorManager.class)
@Local(AdministratorManager.class)
public class AdministratorManagerBean
implements AdministratorManager{}
二.原理:
将IDEA编译好的Class文件加入Cobertura的字节码(不会对接口进行修改),执行修改过的字节码,记录信息在cobertrua.ser文件中,在Jboss运行期间执行Junit测试,会执行修改后的class文件,将信息在Jboss停止后写入Jboss bin目录下的cobertura.bar文件,然后将前后两次生成的Cobertura.ser文件合,将合并后的文件进行分析生成报告.
三.应用
1.重新编译整个工程
2.deploy
将IDEA生成的Class文件,加入Cobertura字节码后,进行替换
3.将Cobertura修改过的字码进行打包
4.部署工程执行测试代码
5.停止Jboss,执行合并操作,交JBoss生成的和根据源码生成的.ser文件合并
6.生成报告
100%覆盖率的因原是只按照Jboss运行期间生成cobertura.ser文件生成的报告
0%的原因是生成的cobertura.ser文件是最初加入instrument的ser文件未经过服务器或加入字码的文件进行修改.
异常:
解决方法:会话Bean中的Local和Remote加入接口名
java.lang.RuntimeException: Use of empty @Remote on bean class and there are more than one default interface
at org.jboss.ejb3.ProxyFactoryHelper.getRemoteInterfaces(ProxyFactoryHelper.java:358)
at org.jboss.ejb3.ProxyDeployer.initializeRemoteBindingMetadata(ProxyDeployer.java:132)
at org.jboss.ejb3.SessionContainer.instantiated(SessionContainer.java:109)
at org.jboss.ejb3.Ejb3Deployment.deployElement(Ejb3Deployment.java:415)
at org.jboss.ejb3.Ejb3Deployment.deployElement(Ejb3Deployment.java:397)
at org.jboss.ejb3.Ejb3Deployment.deployUrl(Ejb3Deployment.java:378)
at org.jboss.ejb3.Ejb3Deployment.deploy(Ejb3Deployment.java:350)
分享到:
相关推荐
"H6逆变器拓扑:离网并网仿真模型研究,支持多模式功率调节与共模电流抑制",#H6逆变器拓扑并离网仿真模型 逆变器拓扑为:h6逆变器拓扑。 仿真说明: 1.离网时支持非单位功率因数负载。 2.并网时支持功率因数调节。 3.具有共模电流抑制能力(共模电压稳定在Udc 2)。 4.有两种滤波器版本(LC LCL)。 5.LC版本下,参考电流20A时所对应的电流THD约为1%。 此外,采用PR单环控制,具有sogipll锁相环,lcl滤波器。 注:(V0001) Plecs版本4.7.3及以上 ,H6逆变器拓扑;离网仿真;并网仿真;非单位功率因数负载;功率因数调节;共模电流抑制;共模电压稳定;滤波器版本;LC LCL滤波器;PR单环控制;sogipll锁相环;Plecs版本4.7.3,H6逆变器拓扑的并离网仿真模型
大厂PFC与全桥LLC集成变频控制的两相交错TCM图腾柱PWM代码实现方法及优化策略,大厂量产的两相交错TCM图腾柱变频控制PFC+全桥LLC源代码 PFC可通过变频控制实现软开关 ,两相交错TCM; 图腾柱变频控制; PFC; 全桥LLC; 软开关。,大厂高频两相交错TCM图腾柱PFC+全桥LLC变频控制源代码
台达PLC高效自动追剪系统:自动计算,稳定运行,可靠编程的自动化解决方案,台达PLC追剪追剪追剪加+剪切 ,编码器追踪送料速度和送料长度,程序可设置滚轮直径,编码器分辨率,电机分辨率及丝杠导程。 根据输入参数自动计算。 程序带手动正反转,自动追剪切断,带手动复位及回原点,调节方便。 实用已在机床上稳定运行两年,程序成熟可靠,程序是我自己写的算法,时请认准我本人,其他人均为盗版,盗版需谨慎。 台达plc,触摸屏用中达一体机触摸屏。 ,核心关键词:台达PLC;追剪;编码器追踪;送料速度和送料长度;程序设置;滚轮直径;电机分辨率;丝杠导程;自动计算;手动正反转;自动追剪切断;手动复位;回原点;程序成熟可靠;中达一体机触摸屏。,"台达PLC自动化追剪系统:精确编码追踪与手动控制集成"
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
# 基于Arduino的BSides Cheltenham 2024 UFO徽章系统 ## 项目简介 这是一个为BSides Cheltenham 2024定制的UFO徽章系统项目。项目包含电路板设计、Arduino代码以及配件清单等。通过此项目,参与者可以制作自己的专属徽章,体验科技与传统结合的乐趣。 ## 项目的主要特性和功能 1. 电路板设计使用Eagle工具设计的电路板,包括PCB文件和元件布局。 2. Arduino代码提供基于ATTiny402微控制器的Arduino代码,用于驱动徽章的硬件功能。 3. 定制设计文件上传了原始矢量设计文件,可根据需要进行修改和个性化定制。 4. 可定制化强可以通过简单的修改代码和更换硬件实现多种功能,比如加入LED灯显示效果、按键交互等。 ## 安装使用步骤 以下步骤假设用户已经下载了本项目的源码文件 1. 获取源码文件下载项目源码文件并解压。
基于西门子S7-200 PLC与组态王软件的洗衣机控制系统设计优化方案 No.710,No.710 基于西门子S7-200 PLC和组态王组态洗衣机控制系统设计 ,基于西门子S7-200 PLC; 洗衣机控制系统设计; 组态王组态; 控制系统设计。,西门子PLC与组态王洗衣控制系统的设计与实施。
2024免费毕业设计成品,包括源码+数据库+往届论文资料 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
"西门子224XP与昆仑通态触摸屏结合的螺杆式空压机工频运行系统:程序注释详尽,直接应用于工程实践的变频机替代方案",螺杆式空压机工频运行,变频机不能用使用西门子224xp 十昆仑通态触摸屏,程序有注释,可直接用于工程 ,螺杆式空压机; 工频运行; 变频机; 不可用; 西门子224xp; 昆仑通态触摸屏; 程序注释; 工程使用,"西门子224XP+昆仑通态触摸屏:螺杆空压机工频运行程序"
基于CNN-BiLSTM-SE注意力机制的时序预测模型:MATLAB环境下的数据回归分析与应用评估,基于卷积神经网络-双向长短时记忆网络结合SE注意力机制的时间序列预测(CNN-BiLSTM-SE) 基于MATLAB环境 替自己的数据即可 基本流程:首先通过卷积神经网络CNN进行特征提取,然后通过通道注意力机制SE对不同的特征赋予不同的权重,最后通过双向长短时记忆网络BiLSTM进行时间序列预测 数据回归预测评价指标为RMSE MAE MBE R2 ,核心关键词:卷积神经网络(CNN); 双向长短时记忆网络(BiLSTM); SE注意力机制; 时间序列预测; MATLAB环境; 特征提取; 权重赋予; 数据回归预测; 评价指标(RMSE、MAE、MBE、R2)。,CNN-BiLSTM-SE注意力机制:MATLAB环境下的时间序列预测基本流程
"MATLAB R2018A中基于超高斯全自动组织图像盲彩色反卷积方法研究——一种下采样预设值优化策略及参数设定",MATLAB环境下基于超高斯全自动组织图像盲彩色反卷积方法 算法运行环境为MATLAB R2018A,压缩包=数据+代码+参考。 opts.prescale = 1; %% downsampling opts.xk_iter = 5; %% the iterations opts.k_thresh = 1 20; opts.kernel_size = 51; ,MATLAB;超高斯全自动组织图像盲彩色反卷积方法;R2018A;压缩包;参数设置;opts.prescale;opts.xk_iter;opts.k_thresh;opts.kernel_size,MATLAB超高斯图像盲彩色反卷积算法v1.0
基于Omron PLC与MCGS组态的5层电梯控制系统优化设计:细节分析与工程实现,No.778 基于Omron欧姆龙PLC和MCGS组态5层五层电梯控制系统设计 ,基于Omron PLC; MCGS组态; 5层电梯; 控制系统设计,Omron PLC与MCGS组态五层电梯控制系统设计
"风能储能协同运行模型:永磁风机与储能系统的高效整合及控制策略研究【含详细参数选择与建模过程参考】",风力发电+储能并网协同运行模型【含个人笔记、参数选择参考资料】 包含永磁风机发电机、储能系统、单极单相并离网逆变器及其各自控制系统(也可以按照需求改为三相并网) 永磁直驱风机:机侧变流器采用转速外环电流内环的双闭环控制策略,爬山搜索法实现最大功率点跟踪控制。 储能电池采用buck-boost双向DCDC变器 控制策略采用电压外环电流内环双闭环控制 稳定直流母线电压400V恒定,电压纹波<1% 逆变并网采用单极调制,开关损耗大幅降低 逆变器采用电网电压前馈、电流环、锁相环控制,对于电网中含有的三次谐波有明显的抗干扰效果。 并网电流THD低至1.39%,满足并网要求 附带参考资料、建模过程参考文件夹(万字以上),含参数计算,亦有本人笔记,整理不易 ,风力发电; 储能并网; 永磁风机发电机; 控制系统; 储能系统; DCDC变换器; 电压控制; 逆变并网; 谐波抗干扰; 参数选择。,"协同运行模型:永磁风机储能系统及其控制系统设计与参数选择参考"
"X00133土壤侵蚀分析:R语言源码、数据集与效果图综合展示",X00133-土壤侵蚀数据分析R语言源码,数据集,和效果图 ,X00133;土壤侵蚀数据分析;R语言源码;数据集;效果图,"R语言源码分析X00133土壤侵蚀数据集与效果图展示"
MAC电脑QT安装资源包(一)
锂枝晶生长与隔膜特性研究:隔膜厚度和表面涂层对应力的补充影响分析,相场锂枝晶-隔膜厚度和表面涂层对枝晶生长影响(补充应力) 参考文献:Influences of Separator Thickness and Surface Coating on Lithium Dendrite Growth: A Phase-Field Study ,相场锂枝晶;隔膜厚度;表面涂层;应力;枝晶生长,相场研究:隔膜厚度与表面涂层对应力下锂枝晶生长的影响
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
基于三菱PLC与MCGS组态技术的自动门控制系统设计策略与应用,No.1074 基于三菱PLC和MCGS组态的自动门控制系统的设计 ,三菱PLC; MCGS组态; 自动门控制系统; 设计; 编号1074,基于三菱PLC与MCGS组态的自动门系统设计No.1074