Vraag:
Bibliotheek met Java-codedekking
metacubed
2014-07-16 15:52:02 UTC
view on stackexchange narkive permalink

Ik ben codedekking aan het opzetten voor een Java-applicatie met meerdere modules. De applicatie heeft integratie- / functionele tests die zich over verschillende modules uitstrekken. module-service , module-dao en module-api zouden bijvoorbeeld worden uitgeoefend door een enkele functionele test.

Ik heb de volgende vereisten:

  1. Rapporteer transitieve codedekking over alle drie modules: Tests zijn alleen aanwezig in module-service , maar ze oefenen ook code uit in de andere twee modules. Ik gebruik momenteel JaCoCo voor codedekking omdat het deze transitieve dekking kan berekenen via zijn run-time instrumentatiefunctie.

  2. Filter ongewenste functies (geen klassen) uit dekking: Een aantal hulpmiddelen voor het verbeteren van de compilatie genereren synthetische methoden en / of codeblokken in de gecompileerde code. Dit vertraagt ​​de dekking aanzienlijk voor kleinere klassen.

Ik heb Cobertura en Emma geprobeerd (die alleen [2] ondersteunen) en JaCoCo (die alleen [1] ondersteunt). Is er een goede bibliotheek die beide doelstellingen ondersteunt?

Een antwoord:
Ira Baxter
2014-12-10 23:39:40 UTC
view on stackexchange narkive permalink

Onze (Semantic Designs) Java Test Coverage Tool zal dit doen. Het is geen bibliotheek; het is eerder een set tools, maar ik denk dat OP dat sowieso bedoelde.

Het werkt door de source code die je aanwijst te instrumenteren (op een class source file by class bronbestand basis). Dit geeft je veel controle over wat er wordt geïnstrumenteerd. Het betekent ook dat de weergegeven testdekkingsgegevens tot op regel en kolom nauwkeurig zijn; als u meerdere conditionals in één regel heeft, houdt onze testdekkingstool hun statussen afzonderlijk bij.

Vereiste 1: Als u de 3 modules allemaal tegelijk instrumenteert, krijgt u een uniform testdekkingsrapport voor alle 3 modules. Als u de 3 modules afzonderlijk instrumenteert, kunt u dekkingsgegevens voor elke module afzonderlijk verzamelen / weergeven; De tool kan echter testdekkingsrapportagegegevens van verschillende sets instrumenten combineren, zodat u het rapport gemakkelijk kunt samenstellen alsof u alle 3 de modules tegelijk had geïnstrumenteerd.

Vereiste 2: automatisch gegenereerde klassebestanden zijn waarschijnlijk niet heb geen broncode die u instrumenteert. Er worden dus geen dekkingsgegevens voor die klassenbestanden verzameld.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...