JUnit 5
Duplication

Intro
  • For duplication, we look at places in code where there are six or more lines of code that are exactly the same.
  • Before duplication is calculated, the code is cleaned to remove empty lines, comments, and frequently duplicated constructs such as imports.
  • You should aim at having as little as possible (<5%) of duplicated code as high-level of duplication can lead to maintenance difficulties, poor factoring, and logical contradictions.
Learn more...
Duplication Overall
  • 4% duplication:
    • 18,436 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 779 duplicated lines
  • 32 duplicates
system4% (779 lines)
Duplication per Extension
java4% (779 lines)
Duplication per Component (primary)
junit-platform-engine13% (397 lines)
junit-jupiter-api4% (128 lines)
junit-jupiter-engine3% (114 lines)
junit-platform-launcher2% (42 lines)
junit-platform-commons1% (36 lines)
junit-platform-testkit4% (30 lines)
junit-jupiter-params2% (26 lines)
documentation6% (6 lines)
junit-vintage-engine0% (0 lines)
junit-platform-suite-api0% (0 lines)
junit-platform-reporting0% (0 lines)
junit-jupiter-migrationsupport0% (0 lines)
junit-platform-runner0% (0 lines)
junit-platform-jfr0% (0 lines)
junit-jupiter0% (0 lines)
junit-platform-console0% (0 lines)
src0% (0 lines)

Duplication Between Components (50+ lines)

G junit-platform-engine junit-platform-engine junit-jupiter-api junit-jupiter-api junit-platform-engine--junit-jupiter-api 150 junit-jupiter-engine junit-jupiter-engine junit-platform-engine--junit-jupiter-engine 174

Download: SVG DOT (open online Graphviz editor)

Show more details on duplication between components...
Longest Duplicates
The list of 20 longest duplicates.
Size#FoldersFilesLinesCode
60 x 2 junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...gine/support/descriptor
FilePosition.java
FilePosition.java
38:179 (98%)
33:174 (98%)
view
20 x 2 junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...gine/support/descriptor
MethodSelector.java
MethodSource.java
149:177 (25%)
191:219 (22%)
view
18 x 2 junit-platform-testkit/s...platform/testkit/engine
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
Assertions.java
AssertAll.java
37:58 (51%)
61:82 (52%)
view
15 x 2 junit-jupiter-engine/src...piter/engine/descriptor
junit-jupiter-engine/src...piter/engine/descriptor
MethodExtensionContext.java
TestTemplateExtensionContext.java
42:64 (48%)
38:60 (53%)
view
13 x 2 junit-jupiter-engine/src...piter/engine/descriptor
junit-jupiter-engine/src...piter/engine/descriptor
DynamicExtensionContext.java
JupiterEngineExtensionContext.java
42:62 (52%)
45:65 (52%)
view
12 x 2 junit-platform-engine/sr...g/junit/platform/engine
junit-platform-launcher/...junit/platform/launcher
SelectorResolutionResult.java
EngineDiscoveryResult.java
92:121 (40%)
77:106 (48%)
view
12 x 2 junit-platform-commons/s....junit.platform.commons
junit-platform-commons/s....junit.platform.commons
module-info.java
module-info.java
25:36 (35%)
39:50 (35%)
view
11 x 3 junit-platform-engine/sr...g/junit/platform/engine
junit-platform-engine/sr...g/junit/platform/engine
junit-platform-launcher/...junit/platform/launcher
SelectorResolutionResult.java
TestExecutionResult.java
EngineDiscoveryResult.java
93:121 (36%)
100:128 (39%)
78:106 (44%)
view
10 x 2 junit-jupiter-engine/src...piter/engine/descriptor
junit-jupiter-engine/src...piter/engine/descriptor
TestTemplateTestDescriptor.java
TestFactoryTestDescriptor.java
55:74 (14%)
70:89 (11%)
view
10 x 2 junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...gine/support/descriptor
MethodSelector.java
MethodSource.java
204:216 (12%)
238:250 (11%)
view
9 x 2 junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
ClasspathResourceSelector.java
FileSelector.java
68:82 (30%)
86:100 (29%)
view
9 x 2 junit-platform-launcher/...her/listeners/discovery
junit-platform-launcher/...her/listeners/discovery
LoggingLauncherDiscoveryListener.java
AbortOnFailureLauncherDiscoveryListen...
80:92 (20%)
49:61 (40%)
view
8 x 6 junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
170:180 (3%)
186:196 (3%)
202:212 (3%)
218:228 (3%)
234:244 (3%)
250:260 (3%)
view
8 x 3 junit-platform-engine/sr...gine/support/descriptor
junit-platform-engine/sr...gine/support/descriptor
junit-platform-engine/sr...gine/support/descriptor
ClassSource.java
ClasspathResourceSource.java
FileSource.java
147:157 (15%)
141:151 (17%)
99:109 (18%)
view
7 x 10 junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
ClasspathResourceSelector.java
ClassSelector.java
ClasspathRootSelector.java
DirectorySelector.java
PackageSelector.java
MethodSelector.java
UniqueIdSelector.java
UriSelector.java
ModuleSelector.java
FileSelector.java
75:82 (23%)
84:91 (21%)
58:65 (30%)
83:90 (25%)
49:56 (30%)
185:192 (8%)
50:57 (30%)
53:60 (30%)
49:56 (30%)
93:100 (22%)
view
7 x 2 junit-jupiter-engine/src...piter/engine/descriptor
junit-jupiter-engine/src...piter/engine/descriptor
DynamicExtensionContext.java
JupiterEngineExtensionContext.java
30:40 (28%)
33:43 (28%)
view
7 x 2 junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
AssertArrayEquals.java
AssertArrayEquals.java
282:291 (3%)
315:324 (3%)
view
7 x 2 junit-jupiter-params/src...upiter/params/converter
junit-jupiter-params/src...upiter/params/converter
DefaultArgumentConverter.java
DefaultArgumentConverter.java
210:220 (5%)
248:258 (5%)
view
6 x 27 junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...gine/support/descriptor
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-jupiter-api/src/ma...t/jupiter/api/extension
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...gine/support/descriptor
junit-platform-engine/sr...ne/support/hierarchical
...
FilePosition.java
ClasspathResourceSource.java
NestedMethodSelector.java
PackageSelector.java
ClasspathResourceSelector.java
NestedClassSelector.java
ExtensionContext.java
ClasspathRootSelector.java
MethodSource.java
ExclusiveResource.java
...
156:162 (9%)
145:151 (13%)
161:167 (11%)
50:56 (26%)
76:82 (20%)
101:107 (16%)
659:665 (7%)
59:65 (26%)
224:230 (6%)
82:88 (16%)
...
view
6 x 3 junit-platform-engine/sr...ne/support/hierarchical
junit-jupiter-engine/src...piter/engine/descriptor
junit-jupiter-engine/src...piter/engine/descriptor
DemoHierarchicalContainerDescriptor.java
TestFactoryTestDescriptor.java
TestTemplateTestDescriptor.java
40:47 (21%)
77:84 (6%)
62:69 (8%)
view
Most Frequent Duplicates
The list of 8 most frequently found duplicates.
Size#FoldersFilesLinesCode
6 x 27 junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...gine/support/descriptor
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-jupiter-api/src/ma...t/jupiter/api/extension
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...gine/support/descriptor
junit-platform-engine/sr...ne/support/hierarchical
...
FilePosition.java
ClasspathResourceSource.java
NestedMethodSelector.java
PackageSelector.java
ClasspathResourceSelector.java
NestedClassSelector.java
ExtensionContext.java
ClasspathRootSelector.java
MethodSource.java
ExclusiveResource.java
...
156:162 (9%)
145:151 (13%)
161:167 (11%)
50:56 (26%)
76:82 (20%)
101:107 (16%)
659:665 (7%)
59:65 (26%)
224:230 (6%)
82:88 (16%)
...
view
7 x 10 junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
junit-platform-engine/sr...atform/engine/discovery
ClasspathResourceSelector.java
ClassSelector.java
ClasspathRootSelector.java
DirectorySelector.java
PackageSelector.java
MethodSelector.java
UniqueIdSelector.java
UriSelector.java
ModuleSelector.java
FileSelector.java
75:82 (23%)
84:91 (21%)
58:65 (30%)
83:90 (25%)
49:56 (30%)
185:192 (8%)
50:57 (30%)
53:60 (30%)
49:56 (30%)
93:100 (22%)
view
8 x 6 junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
170:180 (3%)
186:196 (3%)
202:212 (3%)
218:228 (3%)
234:244 (3%)
250:260 (3%)
view
6 x 3 junit-platform-engine/sr...ne/support/hierarchical
junit-jupiter-engine/src...piter/engine/descriptor
junit-jupiter-engine/src...piter/engine/descriptor
DemoHierarchicalContainerDescriptor.java
TestFactoryTestDescriptor.java
TestTemplateTestDescriptor.java
40:47 (21%)
77:84 (6%)
62:69 (8%)
view
6 x 3 documentation/src/main/java/example/domain
junit-platform-launcher/...her/listeners/discovery
junit-platform-launcher/...her/listeners/discovery
Person.java
AbortOnFailureLauncherDiscoveryListen...
LoggingLauncherDiscoveryListener.java
62:68 (11%)
49:55 (27%)
80:86 (13%)
view
11 x 3 junit-platform-engine/sr...g/junit/platform/engine
junit-platform-engine/sr...g/junit/platform/engine
junit-platform-launcher/...junit/platform/launcher
SelectorResolutionResult.java
TestExecutionResult.java
EngineDiscoveryResult.java
93:121 (36%)
100:128 (39%)
78:106 (44%)
view
6 x 3 junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
junit-jupiter-api/src/ma...a/org/junit/jupiter/api
AssertArrayEquals.java
AssertArrayEquals.java
AssertArrayEquals.java
266:274 (2%)
299:307 (2%)
332:340 (2%)
view
8 x 3 junit-platform-engine/sr...gine/support/descriptor
junit-platform-engine/sr...gine/support/descriptor
junit-platform-engine/sr...gine/support/descriptor
ClassSource.java
ClasspathResourceSource.java
FileSource.java
147:157 (15%)
141:151 (17%)
99:109 (18%)
view