[ http://jira.codehaus.org/browse/MCLOVER-46?page=comments#action_70593 ] Meghan Claire Pike commented on MCLOVER-46: -------------------------------------------
That's cool. I don't really know how the clover coverage works, apart from that it uses bytecode instrumentation (?) I assume it instruments each line / unit of work to log if it's been used during the unit tests. Since you're processing all of the code in a project, I would have imagined it was too hard to put a check in the instrumentation code that checked if the class was an interface and didn't instrument that interface. I imagine also that flags and such would be involved some where. Just slap me and tell me to go look at clovers code if you like. If you have an idea of a way to test an interface explicitly, let me know. I still think it shouldn't output a blank space instead of a percentage or a message saying "You haven't written any tests, dumbass." oh and finally, I take it then there's no way to turn clover off in a couple of pom's, rather than stating clover has to be run in every single pom? > Coverage reports are incorrect for interface only modules. > ----------------------------------------------------------- > > Key: MCLOVER-46 > URL: http://jira.codehaus.org/browse/MCLOVER-46 > Project: Maven 2.x Clover Plugin > Issue Type: Bug > Affects Versions: 2.2 > Environment: ubuntu dapper drake. Maven 2.0, clover maven plugin 2.2 > Reporter: Meghan Claire Pike > Assigned To: Vincent Massol > > Our projects require a coverage of at least 1% in order to force everyone to > at least think about testing. Unfortunately for interface only packages, (due > to seperation of concerns) clover just goes into a small spasm and dies. It's > output is like this: > Clover Version 1.3.12, built on February 08 2006 > loaded from: > <path...>.m2/repository/com/cenqua/clover/clover/1.3.12/clover-1.3.12.jar > Academic License registered to EDINA. This license of Clover is provided to > support coursework at EDINA only. > You have 29 day(s) before your Academic License expires. > Updating database at 'target/clover/clover.db' > Processing files at 1.4 source level. > Instrumented 12 source files. > ... > [INFO] [clover:instrument {execution: default}] > [INFO] [clover:check {execution: default}] > [INFO] Checking for coverage of [1%] for database [target/clover/clover.db] > WARN: No coverage data found for '<path to my api>/target/clover/clover.db'. > [ERROR] Total coverage of did not meet target of 1% > [INFO] > ------------------------------------------------------------------------ > [ERROR] BUILD ERROR > [INFO] > ------------------------------------------------------------------------ > [INFO] Build failed to meet Clover coverage targets > it doesn't even output 0% or anything like that, which seems to me to be a > bug. I think clover should maybe understand a little better that testing > api's doesn't make sense, and is quite difficult to do. I don't have any > testing classes whatsoever in the project, so it could be from that. But > clover should have some ability not to enforce coverage on interfaces. (Or > understand that they can't be tested except indirectly.) > Thanks! -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira