问题标签 [archunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7167 浏览

testing - 如何使用 ArchUnit 忽略测试类中的类

我写了我的第一个 ArchUnit 测试:

问题是它还分析了测试中的类,这些类不遵循简单的依赖约束。

如何将测试限制在“生产”类?

该项目是使用 Maven 构建的,因此这些类位于不同的目录中。

将名称以“Tests”或其他名称结尾的类分开是不够的,因为有许多类不是测试,但仅存在于测试类路径中。

0 投票
1 回答
453 浏览

java - 使用单元测试检查 Clojure 代码的架构

我受到启发购买这本书:构建进化架构清洁架构

其中一个概念是能够在代码中测试您的架构。特别是,我希望能够检查命名空间、层之间的依赖关系,并断言命名空间不会为另一层调用命名空间。

我所有的命名空间都在圆圈内:

我的架构

这个想法是“控制器”内的命名空间不能在“实体”内导入命名空间,而只能导入他下面的命名空间(用例)。我想在我的单元测试中检测到这一点。

所以这应该在我的单元测试中失败:

在 java 中,您可以使用archunit编写此类单元测试。

您是否对 clojure 使用了类似的东西,或者您对如何解决这个问题有一些建议?

0 投票
0 回答
1017 浏览

javascript - 如何自动执行 JavaScript 架构/依赖规则?

我们正在编写一个越来越大的 JavaScript 应用程序。我们有一些我们希望能够强制执行的架构规则,主要用例如下:包 A 不能要求包 B。

在 Java 应用程序中,您可能会使用 ArchUnit 来实现类似的功能。

ArchUnit 是一个免费、简单且可扩展的库,用于使用任何普通的 Java 单元测试框架检查 Java 代码的体系结构。也就是说,ArchUnit 可以检查包和类、层和切片之间的依赖关系,检查循环依赖关系等等。

0 投票
1 回答
392 浏览

java - 在 ArchUnit 中搜索未使用的类,如何找到 MyClass.class 参考?

我正在尝试使用ArchUnit进行单元测试,以检查我是否有任何未使用的类。但我不知道如何检查 MyClass.class 是否引用了某个类。

例如我有一堂课:

然后我以某种方法引用这个类:

如何从 ArchUnit 中看到 MyClass 是从 MySecondClass 引用的?

0 投票
2 回答
601 浏览

java - 如何防止某些包在 ArchUnit 中使用 spring?

如果我想通过ArchUnit使某个 Java 包不受 3rd 方依赖项的影响,我该怎么做?

更具体地说,我正在考虑将我的域模型保持在一个没有弹簧代码的六边形架构中。我指定了一些我认为应该阻止模型使用弹簧的规则。但是,我可以像使用 spring 注释一样@Component并且@Bean不会导致违规。

到目前为止我尝试的是

这里的代码示例可以很好地执行测试,尽管com.example.app.domain.Factory正在导入org.springframework....

0 投票
3 回答
1660 浏览

java - 如何使用archunit验证方法注释是否使用具有特定值的属性

我有一个@Audit注释,它有许多可选属性,我需要useAccount = true对某些包强制使用一个布尔属性。

我正在尝试使用 archunit 来完成此验证,这样每当开发人员提交违反规则的代码时,CI 就会破坏并通知团队。

这会破坏构建:

这是正确的方法:

问题是 Archunit 目前不支持对方法进行断言。我期待做类似的事情:

然后我的自定义条件attributeCheckCondition将负责查看属性值。

当我们检索类时,有没有办法检索方法?无需编写更复杂的谓词和条件?

0 投票
1 回答
695 浏览

java - Java ArchUnit:检测 getMethodCallsFromSelf 方法上的注释

我用自定义注释注释了一些方法:“ExistForTesting”

我想编写一个 (Junit5 + ArchUnit) 单元测试,以确保 ExistForTesting 注释方法仅用于单元测试。所以,我写了给定的测试:

问题:未检测到我的注释。
调试器找到方法调用,但method.getTarget().isAnnotatedWith(ExistForTesting.class))总是返回false.

我究竟做错了什么?

0 投票
1 回答
1286 浏览

java - ArchUnit:检查包是否相互依赖的最优雅的方法

我有两个包com.myapp.foocom.myapp.bar我想知道最优雅的方法来明确检查这两个包(并且只有那些,因为还有更多包com.myapp.XX)不相互依赖。

这就是我现在所拥有的(工作出色):

有没有更优雅的方式,也许不使用SliceAssignment? 谢谢!

0 投票
1 回答
162 浏览

archunit - ArchUnits layeredArchitecture 规则不包含字段

我们通过一些 ArchUnit 规则检查我们的软件架构。

其中之一是对我们分层架构的测试。

这适用于方法。如果我们从 layer1 访问 layer3 的一个方法,我们会得到一个异常。

但是,如果从 layer1 访问在 layer3 中声明的字段,则不会引发异常。

如果我们将一个字段从 layer3 导入到 layer1 类,这不会抛出异常:

我们的期望是,在任何其他层访问来自 layer3 的字段也应该引发异常。或者有其他方法可以检查吗?

0 投票
2 回答
852 浏览

java - ArchUnit:如何避免对 java 类的依赖冲突

我想验证,给定包中的类仅指驻留在包本身中的类。但是我得到了违反,告诉我a类依赖于例如java.lang.String,这对我来说完全没问题。有没有办法忽略基本的java包?