首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDepend依赖项约束失败

JDepend依赖项约束失败
EN

Stack Overflow用户
提问于 2010-12-25 03:16:00
回答 1查看 596关注 0票数 0

我正在使用JDepend来分析我的架构,并创建结构测试来验证分层架构中的依赖关系。两个相关的层是com.domain和com.infrastructure。域具体依赖于基础架构层。

为什么下面的测试失败了?

代码语言:javascript
复制
import java.io.IOException;
import jdepend.framework.DependencyConstraint;
import jdepend.framework.JDepend;
import jdepend.framework.JavaPackage;
import junit.framework.TestCase;

public class DependencyTest extends TestCase {

    private JDepend jdepend;

    @Override
    public void setUp() throws IOException {
        jdepend = new JDepend();

        jdepend.addDirectory("build/classes/com");
    }

    public void testDomainDependsOnInfastructure_ShouldBeTrue() {
        DependencyConstraint constraint = new DependencyConstraint();

        JavaPackage domainPackage = constraint.addPackage("com.domain");
        JavaPackage infastructurePackage = constraint.addPackage("com.infrastructure");

        domainPackage.dependsUpon(infastructurePackage);
        jdepend.analyze();

        assertEquals("Domain doesn't depend on Infrastructure layer", true, jdepend.dependencyMatch(constraint));
    }

}

jdepend.analyze()返回相关的包,所以我知道它正在查找我的代码。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-25 03:52:23

我想通了。JDepend的match函数检查所有包,包括库。我必须用我想要的包自定义加载它。这是解决我的问题的代码,如果有人遇到这个问题。

代码语言:javascript
复制
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import jdepend.framework.DependencyConstraint;
import jdepend.framework.JDepend;
import jdepend.framework.JavaPackage;
import junit.framework.TestCase;

public class DependencyTest extends TestCase {

    private JDepend jdepend;

    @Override
    public void setUp() throws IOException {
        jdepend = new JDepend();
        jdepend.addDirectory("build/classes/com");
    }

    public void testDomainDependsOnInfastructure_ShouldBeTrue() {
        DependencyConstraint constraint = new DependencyConstraint();

        JavaPackage distribution = constraint.addPackage("com.distribution");
        JavaPackage domainPackage = constraint.addPackage("com.domain");
        JavaPackage infastructurePackage = constraint.addPackage("com.infrastructure");

        distribution.dependsUpon(domainPackage);
        domainPackage.dependsUpon(infastructurePackage);
        jdepend.analyze();

        Collection<JavaPackage> actual = new ArrayList<JavaPackage>();
        actual.add(domainPackage);
        actual.add(distribution);
        actual.add(infastructurePackage);

        assertEquals("Domain doesn't depend on Infrastructure layer", true, constraint.match(actual));
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4527971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档