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")); }