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)
分享到:
相关推荐
要使用Cobertura,开发者首先需要解压此zip文件,然后使用Ant或Maven(如果提供了相关的pom.xml)来编译源代码。编译成功后,Cobertura的库可以被添加到目标项目的类路径中,通过配置单元测试框架(如JUnit或TestNG...
`Readme-说明.htm`文件通常包含关于如何安装、配置和使用Cobertura的详细指南,包括可能出现的问题和解决方案。在实际使用中,应仔细阅读此文件,按照指导进行操作。 Cobertura的使用对于持续集成和持续交付(CI/CD...
cobertura和weblogic整合使用-代码覆盖率测试 里面详细步骤和使用说明,并附加xml文件,不懂的可以QQ我,147806015,
此包使用分析器生成 Cobertura 样式的 XML 覆盖率报告。 我们将此报告与 Hudson/Jenkins 结合使用来跟踪测试覆盖率。 下面的代码示例说明了如何使用代码。 有关详细信息,请参见 example.m。 %将源代码添加到路径...
在"cobertura-xml-remapper-master"这个压缩包文件中,可能包含了项目的源代码、配置文件、示例用法和说明文档等,用户可以通过阅读这些内容了解如何安装和使用该工具。为了使用Cobertura-XML-Remapper,你需要熟悉...
在压缩包文件中,`license.txt`很可能是工具的许可协议,详细说明了使用该工具的法律条款和限制。了解并遵守许可证条款对于避免法律问题至关重要。 而`Coverage`可能是一个包含覆盖率数据的MATLAB数据文件,或者是...
【标签】"源码"和"工具"表明这个PPT可能会深入到JUnit的源码层面,解析其内部工作原理,同时也会介绍如何与其他工具(如Cobertura)配合使用,提升测试效率和质量。 综合以上,这份"JUnit PPT"对于学习和理解单元...
7. **测试覆盖率**:为了评估测试的质量,可以使用JaCoCo或Cobertura等工具来计算代码覆盖率,确保测试覆盖了足够的代码路径。 8. **持续集成**:在大型项目中,测试通常会集成到持续集成/持续部署(CI/CD)流程中,...
要生成(单元测试)代码覆盖率报告,请调用mvn cobertura:cobertura ,然后将浏览器指向target/site/cobertura/的输出。 约定 本示例遵循以下基本约定: | 单元测试| 集成测试--- | --- | ---驻留于: | | src/...
在"JavaProjects-master"这个压缩包中,很可能是包含了一个使用Cobertura的Java项目示例,其中可能有以下内容: - **源代码**:包含项目的Java源代码,展示了如何编写待测试的代码。 - **测试代码**:对应源代码的...
8. **代码覆盖率**:为了衡量测试的全面性,报告可能会涉及代码覆盖率工具,如Cobertura或JaCoCo,它们可以显示被测试代码的比例。 9. **实验环境和配置**:报告会详细列出实验所使用的操作系统、开发环境、编程...
4. **Instrumentation**:JQF使用JaCoCo或Cobertura等工具进行代码覆盖率的收集,为模糊测试提供反馈。 5. **Execution Orchestration**:管理和协调整个模糊测试过程,包括测试用例生成、运行、结果收集和分析。 ...
可以使用的工具也有很多,如 Cobertura 等。代码覆盖率并不能代表单元测试的整体质量,但可以提供一些测试覆盖率相关的信息,可以和其他一些测试指标一起来使用。 4. 设计/开发约束 软件开发中有很多设计约束和...
编程练习 董事: 安蒂·哈帕涅米 (Pallero_) ... (3 月 26 日)使用当前版本配置 Cobertura 将无法按说明工作。 您不需要配置 Cobertura。 工程线路覆盖情况见坑报。 对您工作的反馈 通过labtool http://tktl
代码覆盖率API插件 此插件用作集成和发布多种覆盖率报告类型的API。... 配置Maven以生成Cobertura覆盖率报告: < build> < plugins> < plugin> < groupId>org.codehaus.mojo</ groupId> < artifactId>cobertu
以下是对Spring测试框架及其核心组件的详细说明: 1. **测试注解**:Spring测试框架利用注解简化了测试代码。例如,`@RunWith(SpringRunner.class)`注解用于告诉JUnit使用Spring的测试运行器执行测试,而`@...
此外,PHPUnit还可以与不同的后处理工具(如 Clover、Cobertura 或 TextUI)结合,生成详细的报告。 压缩包文件"php7.0.33-code-coverage-tools"可能包含了与PHP 7.0.33兼容的代码覆盖率工具,例如Xdebug的安装包、...
测试覆盖率是衡量测试完整性的关键指标之一,它反映了测试用例对源代码或需求规格说明的覆盖程度。良好的测试覆盖率有助于发现潜在的问题,并确保软件的各个部分都得到了充分的验证。 1. **概念**:测试覆盖率可以...
- `README`通常包含项目介绍、安装指南和使用说明。 - `cobertura.ser`可能与代码覆盖率工具Cobertura相关,用于度量测试的覆盖程度。 - `Desc.txt`可能包含了项目的详细描述或特定功能的解释。 - `License.txt`记录...
该存储库的主要目标是提供一组配置文件作为模板,以说明如何在各种CI平台(例如Azure DevOps,CircleCI,GitHub Actions,Jenkins,Travis CI)上运行MATLAB。 这些管道定义中的每一个都执行以下四项操作: 在基于...