问题标签 [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 投票
1 回答
607 浏览

java - ArchUnit 规则来检查类是否在同一个包或子包中被访问?

我有由我的自定义注释注释的类@Inner

我想创建一个规则ArchUnit来检测是否在同一个包或子包中访问了使用此特定注释注释的类。

例如:

包裹:com.example.my.package

包含类:MyInner带有注释的@Inner

所以规则应该检查是否MyInner只能从com.example.my.packageor访问com.example.my.package.baz

0 投票
1 回答
613 浏览

java - 使用 ArchUnit 检查子类中的注释存在

我正在使用 JUnit 5 评估 ArchUnit 0.13.1 并尝试编写如下规则:

问题是 ArchUnit 中没有方法“onlyHaveSubclassesThat()”。我确信可能还有另一种方法可以实现相同的目标,但是如何实现呢?

0 投票
1 回答
98 浏览

java - 如何在 Java 中使用 ArchUnit 禁止文件中的特定内容

我想要一个规则来检查某些特定的字符串。假设我们不想在我们的代码库中看到“ Objects.nonNull ”,并且想要导入静态的“ nonNull ”。

我怎样才能在ArchUnit中做到这一点?我知道它是为了更多的架构目标,但我们已经在项目中拥有它,所以也许我们也可以将它用于较低级别的检查。

或者如何在其他框架中轻松完成?

0 投票
1 回答
365 浏览

scala - 我如何断言一个类是否使用 ArchUnit 扩展了“AnyVal”

我想编写一个拱单元测试来断言一个类扩展了AnyVal类型。

上面的代码实际上并没有捕捉到任何东西,并且传递了不扩展的类AnyVal

0 投票
1 回答
44 浏览

archunit - ArchUnit:如何在类的签名/API 中检查不需要的依赖项?

我想实现一个 ArchUnit 规则来检查不需要的依赖项。这很容易做到,但我只对属于类签名/API 一部分的违规行为感兴趣。例如,如果该类在私有字段中使用了不需要的依赖项或作为私有方法的方法参数,那很好,因为它从外部不可见。

我正在努力使用流畅的 API。我的出发点是:

如何改进上述规则以仅触发我的课程的非私人语言元素?

0 投票
1 回答
109 浏览

archunit - ArchUnit 规则来测试@Service 只依赖于自己包中的@Repository?

我想编写一个 ArchUnit 规则来验证服务类(由@ServiceSpring 注释注释)将仅使用其自己的包中的存储库,而不使用其他包中的存储库。

我目前有:

这不好,因为它根本不允许对存储库有任何依赖。

或者,我可以这样做:

但是我重复了包名com.company.backend.user3 次我需要为每个包定义这个规则。

0 投票
1 回答
51 浏览

java - 如何使用 Archunit 仅测试具有某些 Spring 配置文件的类

我有一个具有不同配置文件的 Spring 应用程序,例如“开发”和“生产”。我用 Archunit 测试架构。我有类似的测试

我的包中的类有不同的配置文件。我怎样才能只包含带有 Spring Profile“生产”的类?

0 投票
1 回答
211 浏览

archunit - 确保从另一个方法调用?

我有一个图层,调用它Service,另一个调用Permission. 我想知道我是否可以强制执行以下规则:

从 layer 内任何公共类的任何公共方法中,Service其参数列表包含一个名为 的参数foo,断言它从Permissionlayer 调用一个方法(理想情况下,确保在Servicelayer 内的任何其他东西之前调用它)。

ArchUnit 有可能吗?

0 投票
1 回答
489 浏览

java - 如何创建 ArchUnit 规则来验证抛出的所有异常都继承自特定的自定义异常?

我的架构规则之一是应用程序代码抛出的所有异常必须是 CustomException 或 CustomException 的子类。

我在 ArchUnit 中编写这条规则时遇到了困难。我目前拥有的是以下内容:

运行此规则会返回 true(JUnit 测试通过),即使我的代码会引发不是 CustomException 的异常。

我已经测试了检测构造函数具有可分配给 Throwable 的所有者的规则部分:

这会正确返回代码中创建任何 Throwable 的每个位置。

问题似乎出在我的代码中,它试图找到不可分配给 CustomException 的所有者:

这将返回每个构造函数,即使是那些可分配给 CustomException 的异常。

ArchUnit 中编写规则的正确方法是什么,该规则返回调用构造函数的每个代码单元,该构造函数的所有者可分配给 Throwable,而不是可分配给 CustomException?

0 投票
2 回答
114 浏览

java - Arch 测试失败 STANDARD_STREAMS

我有遵循 archunit 规则的应用程序,我得到:

NO_CLASSES_SHOULD_ACCESS_STANDARD_STREAMS

失败的规则——这意味着我不能使用标准的 Java I/O 流。但我可以用什么代替?

如何使用另一种 Java 方法而不是标准流来避免这种架构规则?因为我的拱门规则失败了