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

flutter - ArchUnit / Flutter 或 Dart 的测试架构

我正在使用 Clean Architecture 开发 Flutter 应用程序。现在我正在寻找一个图书馆或其他类似 ArchUnit 的东西。测试架构并确保正确访问包。

您如何解决问题并确保符合架构。我会很感激想法或替代方案。

0 投票
1 回答
104 浏览

java - 如何使用 ArchUnit 在 Java 代码中强制使用 SLF4J

我想使用ArchUnit来强制使用SLF4J 日志框架并避免简单的System.out调用。此外,我想避免使用任何其他日志记录框架。我该如何实施这样的检查?

目前我写这个测试

但它实际上并没有强制使用 SLF4J,而只是限制java.unit.logging使用并防止对java.lang.System类有依赖性(实际System.out常量所在的位置)。

我的情况是否更优雅的解决方案?

0 投票
1 回答
396 浏览

python - 有没有像 Django 的拱单元这样的库?

我一直在寻找一个库或工具来测试我的 Django 项目架构,检查依赖项、层等,比如 Arch Unit for Java。但直到现在,我什么也没找到。我什至不知道在 Python/Django 项目中进行此类测试是否可行。我知道 Django 本身已经检查了循环依赖项。

0 投票
1 回答
66 浏览

archunit - ArchUnit 基类型抛出错误

[错误] 失败:[错误] DomainLayerTest$all.domain_layer_depend_on_rule:29 架构违规 [优先级:MEDIUM] - 规则“域层应该只依赖于 java 和域包中的类。” 被违反(1 次):字段 <com.abc.test.domain.contexts.configcontext.config.LdapBasicSetting.SECRET_KEY> 在 (LdapBasicSetting.java:0) 中具有类型 <[B>

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
383 浏览

java - ArchUnit 测试 importOptions DoNotIncludeTests 不起作用

我正在使用 Spring 2.3.8 应用程序中的 ArchUnit 0.18 和 archunit-junit5。由于某种原因我找不到,ImportOption.DoNotIncludeTests.class没有按预期工作,并且还包括测试类。我只能通过在这些测试类中注释代码来让 ArchUnit 测试工作。

ArchUnit 测试是:

为了不考虑测试课程,我是否错过了一些步骤?

谢谢!

0 投票
0 回答
62 浏览

archunit - ArchUnit 在检查传入访问时不排除测试类

我在 0.18.0 版本中使用 ArchUnit,但我遇到的问题是我违反了应该排除的测试类。

使用导入选项排除测试类DO_NOT_INCLUDE_TESTS。此外,过滤器会排除以“Test”结尾的类。

尽管如此,由于从测试类访问 中的类,以下访问规则失败packageIdentifierWithRestrictedAccess

这是预期的行为还是 ArchUnit 中的错误?

0 投票
1 回答
36 浏览

java - 使用 ArchUnit 限制对静态方法的访问

在我们的架构指南中,我们应该只从域模型或存储库实现(位于基础设施层)中实例化业务异常

我们通常使用工厂方法创建异常。

所以我想为此制定一个 ArchUnit 规则。应该遵循以下原则:只有位于domain或实现的Repositories类才能大声调用带有注释的类的静态方法@BusinessException

我们所有的业务异常都使用@BusinessException 进行注释。所以很容易找到它们。

我尝试了它的变体:

areImplementing()是一个自定义谓词,用于确定一个类是否是存储库的实现。

此代码无法编译。isAnnotatedWith不能这样使用。

我也尝试过

再次,这不编译,onlyBeCalled不存在。

有人有想法吗?

0 投票
2 回答
139 浏览

archunit - ArchUnit 中的 AnyOf-Predicate

我想测试所有 Hibernate 关联注释(@ManyToOne、@OneToMany、@OneToOne、@ManyToMany)都在使用fetch = FetchType.LAZY. 这是有效的:

我必须过滤两次,因为一个字段可以有几个注释,如下所示:

我不喜欢的是我必须写两次注释(ManyToOne…)。为什么 ArchUnit 中没有“anyOf”谓词?或者有没有其他方法可以避免重复它们?

0 投票
1 回答
103 浏览

java - ArchUnit - 有没有办法使用通用占位符检查包访问?

我想检查 FOO.model 是否只能由 FOO.service访问, 而 BAR.model 是否只能由 BAR.service访问 等等。

有没有办法用 ArchUnit 实现这一点?喜欢(伪代码)

我知道我可以编写一个迭代所有 FOO、BAR 等包的测试,或者为每个包编写一个单独的测试,但我正在寻找一个不需要的通用开箱即用解决方案每次我引入一个新包时更新我的​​测试类。

0 投票
1 回答
213 浏览

archunit - Archunit 测试:类只能访问它们实现的接口

我有两个包,一个用于接口,一个用于实现。我想将类的访问限制在它们实现的接口上。说:

我已经有一个规则来确保 com.impls 中的每个类都实现来自 com.interfaces 的接口:

现在我需要确保一个类只访问它实现的接口。如果有帮助,我也可以依赖上面示例中的命名约定。我正在寻找类似的东西:

我们将在任何地方使用接口,并注入实现(Spring Boot)。但是不允许实现访问它没有实现的接口。所以允许 AI 访问 A 但不允许访问 B。允许 BI 访问 B 但不允许访问 A!另一方面,接口不限于实现。它们将用于其他包中。

有没有办法重用规则第一部分的名称或在 ArchUnit 中以另一种方式限制访问?