问题标签 [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.
testing - 如何使用 ArchUnit 忽略测试类中的类
我写了我的第一个 ArchUnit 测试:
问题是它还分析了测试中的类,这些类不遵循简单的依赖约束。
如何将测试限制在“生产”类?
该项目是使用 Maven 构建的,因此这些类位于不同的目录中。
将名称以“Tests”或其他名称结尾的类分开是不够的,因为有许多类不是测试,但仅存在于测试类路径中。
javascript - 如何自动执行 JavaScript 架构/依赖规则?
我们正在编写一个越来越大的 JavaScript 应用程序。我们有一些我们希望能够强制执行的架构规则,主要用例如下:包 A 不能要求包 B。
在 Java 应用程序中,您可能会使用 ArchUnit 来实现类似的功能。
ArchUnit 是一个免费、简单且可扩展的库,用于使用任何普通的 Java 单元测试框架检查 Java 代码的体系结构。也就是说,ArchUnit 可以检查包和类、层和切片之间的依赖关系,检查循环依赖关系等等。
java - 在 ArchUnit 中搜索未使用的类,如何找到 MyClass.class 参考?
我正在尝试使用ArchUnit进行单元测试,以检查我是否有任何未使用的类。但我不知道如何检查 MyClass.class 是否引用了某个类。
例如我有一堂课:
然后我以某种方法引用这个类:
如何从 ArchUnit 中看到 MyClass 是从 MySecondClass 引用的?
java - 如何防止某些包在 ArchUnit 中使用 spring?
如果我想通过ArchUnit使某个 Java 包不受 3rd 方依赖项的影响,我该怎么做?
更具体地说,我正在考虑将我的域模型保持在一个没有弹簧代码的六边形架构中。我指定了一些我认为应该阻止模型使用弹簧的规则。但是,我可以像使用 spring 注释一样@Component
并且@Bean
不会导致违规。
到目前为止我尝试的是
也
这里的代码示例可以很好地执行测试,尽管com.example.app.domain.Factory
正在导入org.springframework...
.
java - 如何使用archunit验证方法注释是否使用具有特定值的属性
我有一个@Audit
注释,它有许多可选属性,我需要useAccount = true
对某些包强制使用一个布尔属性。
我正在尝试使用 archunit 来完成此验证,这样每当开发人员提交违反规则的代码时,CI 就会破坏并通知团队。
这会破坏构建:
这是正确的方法:
问题是 Archunit 目前不支持对方法进行断言。我期待做类似的事情:
然后我的自定义条件attributeCheckCondition
将负责查看属性值。
当我们检索类时,有没有办法检索方法?无需编写更复杂的谓词和条件?
java - Java ArchUnit:检测 getMethodCallsFromSelf 方法上的注释
我用自定义注释注释了一些方法:“ExistForTesting”
我想编写一个 (Junit5 + ArchUnit) 单元测试,以确保 ExistForTesting 注释方法仅用于单元测试。所以,我写了给定的测试:
问题:未检测到我的注释。
调试器找到方法调用,但method.getTarget().isAnnotatedWith(ExistForTesting.class))
总是返回false
.
我究竟做错了什么?
java - ArchUnit:检查包是否相互依赖的最优雅的方法
我有两个包com.myapp.foo
,com.myapp.bar
我想知道最优雅的方法来明确检查这两个包(并且只有那些,因为还有更多包com.myapp.XX
)不相互依赖。
这就是我现在所拥有的(工作出色):
有没有更优雅的方式,也许不使用SliceAssignment
? 谢谢!
archunit - ArchUnits layeredArchitecture 规则不包含字段
我们通过一些 ArchUnit 规则检查我们的软件架构。
其中之一是对我们分层架构的测试。
这适用于方法。如果我们从 layer1 访问 layer3 的一个方法,我们会得到一个异常。
但是,如果从 layer1 访问在 layer3 中声明的字段,则不会引发异常。
如果我们将一个字段从 layer3 导入到 layer1 类,这不会抛出异常:
我们的期望是,在任何其他层访问来自 layer3 的字段也应该引发异常。或者有其他方法可以检查吗?
java - ArchUnit:如何避免对 java 类的依赖冲突
我想验证,给定包中的类仅指驻留在包本身中的类。但是我得到了违反,告诉我a类依赖于例如java.lang.String,这对我来说完全没问题。有没有办法忽略基本的java包?