知识点

相关文章

更多

最近更新

更多

cobertura使用教程-junit单元测试

2019-03-05 14:43|来源: 网路

Cobertura 是一种开源工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码和没有执行哪些代码,来测量测试覆盖率。除了找出未测试到的代码并发现 bug 外,Cobertura 还可以通过标记无用的、执行不到的代码来优化代码,还可以提供 API 实际操作的内部信息。下面是Cobertura 的入门教程,希望对你有帮助


1、将cobertura的路径设置到path中


2、将要测试的源代码,编译之后的字节码文件和所需要的jar包拷贝到一个单独的目录中做处理


3、在命令提示符中使用命令为要生成测试覆盖率报告的代码生成一个ser的文件

生成cobertura.ser文件


cobertura-instrument --destination instrumented org/konghao/manager/


4、基于ser文件运行测试


java -cp lib/junit-4.10.jar;lib/cobertura.jar;instrumented;.;-Dnet.sourceforge.cobertura.datafile=cobertura.ser org.junit.runner.JUnitCore org.konghao.manager.TestUserManager


5、根据ser文件生成测试覆盖率的报告

 特别注意:如果文件的编码是utf-8的,在生成报告前需要为cobertura-report.bat文件增加DfileEncoding的处理

cobertura-report --format html --datafile cobertura.ser --destination reports src



本文转自网络


相关问答

更多
  • @BeforeClass,@AfterClass 只能修饰static方法,相对于具体类只执行一次。 @Before,@After 才是修饰一般 (非static) 方法的,在每次 new 一个对象的时候都会执行一次
  • 你自己测试只是意思一下而已,不够正规用JUnit测试会有测试案例和测试结果,方便给领导汇报工作作为依据而且听说有的公司先写测试案例,后实现功能,这种情况下就必须要用了 查看原帖>> 希望采纳
  • 需要你初始化连接池再做单元测试。 一般的方法是写一些专为测试用的连接池。
  • 你自己测试只是意思一下而已,不够正规用JUnit测试会有测试案例和测试结果,方便给领导汇报工作作为依据而且听说有的公司先写测试案例,后实现功能,这种情况下就必须要用了
  • 最好用jnuit4.x的,使用方便,而且支持新特性。你先试试能不能解决
  • 来自cobertura-anttask参考 : 出于同样的原因,如果您使用的是ant 1.6.2或更高版本,那么您可能需要设置forkmode =“once”这将导致您的所有JUnit测试只启动一个JVM,并且会减少Cobertura阅读的开销/每次JVM启动/停止时写入覆盖率数据文件。 (强调是我的。) From cobertura-anttask reference: For this same reason, if you're using ant 1.6.2 or higher then you m ...
  • 您可能需要使用-ea JVM参数启用断言,因为它们默认为关闭。 当断言被禁用时,如果assert失败, assert不会抛出异常。 如果您在Eclipse中运行此操作,则可以在首选项中编辑Installed JRE以将其添加为参数,或者将其添加到测试的运行配置中。 另外,引发的异常是AssertionError ,而不是AssertError 。 You probably need to enable assertions with the -ea JVM argument, since they're o ...
  • 我不知道JUnitEE,但您可以尝试使用HttpUnit http://httpunit.sourceforge.net/index.html进行单元测试servlet。 看不出它与JUnit 4不兼容的任何原因。 I don't know JUnitEE but you can try to use HttpUnit http://httpunit.sourceforge.net/index.html for unit testing servlets. Cannot see any reason it ...
  • 从Java插件2.2版和Cobertura插件1.6版开始,SonarQube不再触发单元测试执行:只有重用报告模式可用。 请注意,这两个插件的推荐版本是固定版本Java 2.2.1和Cobertura 1.6.1,以防止JaCoCo和Cobertura插件之间的冲突(这将发生在2.2)。 由于这一切,选择默认代码覆盖率工具的属性不再相关,您只需提供覆盖率报告(cobertura或JaCoCo)来获取您的覆盖信息。 请参考这些文档以大致了解如何执行此操作: http : //docs.codehaus.or ...
  • 测试按顺序执行。 你不应该依赖这个事实,因为这表明你没有编写纯单元测试并创建了反模式(在测试方面)。 每个测试必须是它自己独立的工作, After和Before初始化之外没有外部依赖。 我相信每个测试都是在自己的线程中执行的,再次回到你的测试套件而不是纯粹的单元测试。 我担心的是,如果在真实环境中正确使用(如文档所述),那些测试可能会导致不存在的问题。 单元测试仅验证函数的一小部分,通常是一个可能的逻辑分支。 如果要测试系统集成,则需要执行所谓的集成测试。 此外,如果您正在寻求进行多线程测试,我强烈建议: ...