问题标签 [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 回答
136 浏览

archunit - 使用 ArchUnit 测试模块中的包依赖关系

我无法用 ArchUnit 制定以下测试:

我想确保某个包中的所有类只访问应用程序基础包之外或某个子包内的类(“或”而不是“xor”)。

我得到的是:

问题是,or 条件应该在 onlyAccessClassesThat() 内。如果一个类具有两种类型的访问权限,则上述公式将失败,我希望这是有效的。

我怎样才能达到我想要的?感谢您对此的任何帮助...

0 投票
2 回答
294 浏览

archunit - ArchUnit:未检测到泛型的循环依赖

ArchUnit 0.14.1 没有检测到用作通用字段参数的类型的循环依赖关系。这是 ArchUnit 的限制还是我做错了什么?,例如:

0 投票
1 回答
703 浏览

java - ArchUnit - 确保方法参数被注释

我正在尝试编写一个 ArchUnit 测试规则,它应该确保带有注释的接口具有带有@ComponentInterface注释的方法参数@Input。像这样:

界面如下所示:

但是测试失败并出现如下错误: Method < com.some.package.AdminComponent.login(java.lang.String)> does not have raw parameter types all elements annotated with @Input in (AdminComponent.java:0)

在这种情况下,规则应该如何正常工作?

PS 在做了一些调试之后,原来haveRawParameterTypes检查参数类型(类)是否被注释,而不是方法参数本身。所以它查看String类并发现它没有用@Input注释。很高兴知道,但这并不能解决问题。

0 投票
1 回答
480 浏览

archunit - ArchUnit: how to test for imports of specific classes outside of current package?

To externalize UI strings we use the "Messages-class" approach as supported e.g. in Eclipse and other IDEs. This approach requires that in each package where one needs some UI strings there has to be a class "Messages" that offers a static method String getString(key) via which one obtains the actual String to display to the user. The Strings are internally accessed/fetched using Java's Resources mechanism for i18n.

Esp. after some refactoring - we again and again have accidental imports from a class Messages from a different package.

Thus I would like to create an archunit rule checking whether we only access classes called "Messages" from the very same package. I.e. each import of a class x.y.z.Messages is an error if the package x.y.z is not the same package as the current class (i.e. the class that contains the import)

I got as far as this:

#xA;

but now I got stuck at the ???. How can one phrase a condition "and the referenced/imported class "Messages" is not in the same package as this class"?

I somehow got lost with all these archunit methods of which none seems to fit here nor lend itself to compose said condition. Probably I just can't see the forest for the many trees. Any suggestion or guidance anyone?

0 投票
1 回答
434 浏览

archunit - ArchUnit 层测试:如何排除特定类?

是否有可能从 ArchUnit 测试中的分层测试条件中排除特定类?

我有包 A、B、C、D 定义如下:

包 A 包含由包 B、C 和 D 中的类使用和扩展的实用程序和基类。因此,规则应该是 A 中的类不得引用扩展包中的任何内容,除非 A 中有工厂类它指的是 B、C、D 中的一堆叶类。因此需要从该测试中排除工厂类。

ArchUnit 中的“A 中的 FactoryClass 除外”- 条件中的一个短语怎么会出现?

希望我能把自己说清楚...

0 投票
1 回答
82 浏览

java - ArchUnit:基于类导入创建规则

我想创建一个 ArchUnit 规则,它不允许在我的项目中使用所谓的星号 (*) 导入。我可以在 ArchUnit 中实现这一点吗?

0 投票
1 回答
257 浏览

java - 是否可以检查方法是否在一组类中声明?

我正在使用 ArchUnit,我想检查一个包中的所有类是否都声明了一个唯一的公共方法,称为execute. 我有这个代码:

execute它可以工作,但是当任何类中没有方法时,我希望这个测试失败。使用我的代码,测试通过,因为所有公共方法(零)实际上都有名称“执行”。

0 投票
1 回答
60 浏览

archunit - ArchUnit 可以在方法调用中检查某些字符串模式吗?

在我们的代码中,我们一次又一次地遇到一个问题,即在使用 logger 和 String.format(...) 方法之间切换时,有人忘记调整占位符的使用。

对于日志语句,必须使用“{}”作为占位符,如下所示:

但是,当使用 String.format(...) 编写消息时,必须使用 '%s' 作为字符串的占位符,并且语句必须阅读:

在记录错误时,通常使用第二种形式,其中第二个参数是要记录的 Throwable。

人们经常忘记这些细节,然后我们最终得到错误的日志语句,输出不合理。

我知道并同意这绝对不是架构问题,而是一个简单的编程错误,但如果可以(ab-)使用 ArchUnit 来检查 '%s' 的使用(或缺少 '{ }') 在String.format()-method 的第一个 String 参数中。这样的事情可能吗?

0 投票
2 回答
76 浏览

archunit - archunit中的members和fiels有什么区别

我想知道ArchUnitmembers()fields()in ArchUnit 有什么区别。我找不到任何关于它的文档。

0 投票
2 回答
152 浏览

java - ArchUnit 似乎没有缓存分析的类

我使用 Jupiter 编写了一些 ArchUnit-Tests。我发现了一些例子,你可以使用非静态方法编写 ArchUnit 测试,例如:

优点是,你可以做一些不可能静态的事情——比如在运行时使用反射和其他东西来提取包名。

但是性能很差。像 1-10 秒,具体取决于大小。

无论哪种方式,ArchUnit 都声明所有类都缓存为静态的。