2016-04-25 150 views
1

使用多线程时,我们试图用一对夫妇的代码覆盖率插件为我们的春天项目(EclEmma,三叶草)的代码覆盖率%是错误的。JUnit和春天 - 在测试

两者都提供有关覆盖率%错误的结果。

的测试是使用Spring的taskExecutor的(线程池)。

所有任务执行的线程执行的代码不能算作覆盖。

任何想法,为什么?

+0

你能否提供一个这样的代码和测试的例子? – Godin

回答

-1

我刚刚打了同样的问题,但考虑这个问题,JUnit的/ EclEmma怎么能知道或跟踪上并行运行多个/其他线程执行的代码?我的假设是,它只适用于“主要/当前”线程。单元测试以及覆盖的正确方法是将[作为方法]隔离并在单独的测试中测试在其他线程上执行的代码。一种说服自己的方法......当JUnit在调试模式下运行时尝试突破。这并不“起作用”,或者......在断点处跨越,你可能会发现你不会在下一条指令结束,或者/或者另一个线程上的代码已经完成很久,并且测试已经完成。

+0

“我的假设是,它只适用于'main/current'线程。”这是错误的假设:[JaCoCo](http://www.eclemma.org/jacoco/index.html)(EclEmma使用的覆盖引擎)不会对线程进行任何区分,并且可以收集多个线程提供的覆盖率。 “怎么样?” - 有点偏离主题。我不熟悉Spring的taskExecutor,只会列出几个可能的常见原因:类文件中没有调试信息,在运行时修改类,...(http://www.eclemma.org/jacoco/trunk/doc/ faq.html)深入了解这个问题需要一个例子(复制者)。 – Godin

相关问题