O que eu gostaria de conseguir é escrever uma regra ArchUnit para garantir que nossos pacotes permaneçam pequenos o suficiente.
Por exemplo, suponha isto:
natural
├─ goodpackage
│ ├─ apple
│ ├─ banana
│ ├─ mango
├─ badpackage
│ ├─ file1
│ ├─ file2
│ ├─ ...
│ ├─ file10
Neste exemplo, digamos que mais de 9 arquivos é muito, enquanto até 8 arquivos é pouco o suficiente.
Isso também é apenas para pacotes leaf, ou seja, os pacotes de nível mais baixo (se houver arquivos neste pacote, mas também subpacotes, o teste deve ter como alvo os subpacotes)
Tentei usar a classe com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes
e esperava encontrar uma maneira de iterar dentro de um pacote, mas sem sorte.
Também pesquisei se podemos obter os pacotes diretamente do ArchUnit, algo como:
@Test
void leafPackagesShouldNotHaveMoreThan9Files() { }
packages().that().areInSubPackages().shouldNot().have(moreThan9Files()).check(importedClasses);
}
Mas também não é possível.
Como verificar se há menos de N arquivos em um pacote leaf com o ArchUnit?
Você provavelmente pode usar algo assim:
...