fuin.org
Small Open Source Java Tools and Libraries
Asserting package dependencies
It's a good practice enforcing package dependencies to avoid high coupling and package cycles.
You simply define a dependency description in your "src/test/resources" folder (Example: "units4j.xml"):
<dependencies>
<alwaysAllowed>
<dependsOn package="java.lang"/>
<dependsOn package="java.io"/>
<dependsOn package="java.util"/>
<dependsOn package="org.junit"/>
</alwaysAllowed>
<alwaysForbidden>
<notDependsOn package="junit.framework"/>
</alwaysForbidden>
<allowed>
<package name="org.fuin.units4j">
<dependsOn package="org.fuin.utils4j"/>
<dependsOn package="org.fuin.units4j.dependency"/>
</package>
</allowed>
<forbidden>
<package name="org.fuin.units4j.dependency">
<notDependsOn package="org.fuin.units4j" comment="A package should not depend on it's parent!"/>
</package>
</forbidden>
</dependencies>
Next you create a test method using the dependency description:
@Test
public final void testAssertDependencies() {
AssertDependencies.assertRules(this.getClass(), "/units4j.xml", new File("target/classes"));
}