Modification de la visibilité des méthodes et des classes pour JUnit 5

Modifier la visibilité des méthodes et des classes pour JUnit 5
L'un des plaisirs de la programmation réside dans l'apprentissage constant nécessaire pour rester à jour. L'un des problèmes est que nous développons des habitudes et des modèles d'utilisation qui peuvent freiner l'adoption de nouvelles approches. Sensei facilite la migration en identifiant les modèles obsolètes et en nous suggérant les correctifs à adopter.
Par exemple, lors de ma migration de JUnit 4 vers JUnit 5, j'avais l'habitude de déclarer toutes mes classes et méthodes de test comme publiques. Or, avec JUnit 5, elles peuvent être privées au niveau du package.
par ex. au lieu de :
public class Junit5VisibilityTest {
@Test
public void thisDoesNotNeedToBePublic(){
Assertions.assertTrue(true);
}
}
Je préfère écrire :
class Junit5VisibilityTest {
@Test
void thisDoesNotNeedToBePublic(){
Assertions.assertTrue(true);
}
}
Il m'a fallu du temps pour acquérir ce réflexe, et il m'arrive encore de faire des erreurs.
Utiliser Sensei
Avec Sensei, je peux créer des recettes qui détectent les méthodes et classes publiques, puis modifier automatiquement leurs déclarations pour les rendre privées au niveau du package.
Pour y parvenir, j'ai créé une recette :
Nom - JUnit : Les méthodes de test JUnit 5 n'ont pas besoin d'être publiques
Description - Les méthodes de test JUnit 5 ne nécessitent pas une visibilité publique
Niveau - Erreur
Je l'ai classée comme « Erreur » car je souhaite éradiquer cette pratique de codage et obtenir une meilleure visibilité du problème lors de l'écriture du code dans l'IDE.
Modifier la déclaration de classe
Pour trouver les classes, je recherche toute classe possédant une annotation enfant @Test de JUnit 5, c'est-à-dire org.junit.jupiter.api.Test
Et lorsque la classe possède le modificateur public :
recherche :
classe :
avec :
enfant :
annotation :
type : "org.junit.jupiter.api.Test"
modificateur : "public"
Ensuite, la correction rapide modifie le modificateur pour supprimer la visibilité afin qu'elle soit par défaut, ce qui correspond à la visibilité de package que je recherche.
correctionsDisponibles :
- nom : "supprimer la visibilité public de la classe de test JUnit 5"
actions :
- modifierModificateurs :
visibilité : ""
Modification des déclarations de méthode
La recette de modification de déclaration de méthode est très similaire à celle de la classe.
Je recherche d'abord les méthodes publiques annotées avec @Test de JUnit 5.
recherche :
méthode :
annotation :
type : "org.junit.jupiter.api.Test"
modificateur : "public"
Et je change ensuite le modificateur pour une visibilité par défaut.
correctionsDisponibles :
- nom : "Supprimer la visibilité public de la méthode @Test"
actions :
- modifierModificateurs :
visibilité : ""
Astuce : Modifier plusieurs méthodes
Sensei permet d'appliquer la correction rapide à toutes les violations présentes dans le fichier actuel.
Lorsque j'utilise alt+entrée pour appliquer la correction rapide.
Si je développe le menu des noms de correction rapide, je peux voir une option pour :
"Corriger tout : problèmes 'JUnit : les méthodes de test JUnit 5 n'ont pas besoin d'être publiques' dans le fichier"
Lorsque je sélectionne cette option, Sensei corrige toutes les occurrences du problème, et pas seulement celle que j'ai sélectionnée.

Modification de la classe
Tout comme une méthode n'a pas besoin d'être publique, une classe n'en a pas besoin non plus.
Je peux créer une recette et une correction rapide pour modifier la classe.
Nom - JUnit : Les classes de test JUnit 5 n'ont pas besoin d'être publiques
Description - Les classes de test JUnit 5 n'ont pas besoin d'être publiques
Niveau - Erreur
Lorsque je trouve une classe qui est publique et qui possède une méthode avec une annotation @Test, je souhaite alors modifier sa visibilité.
recherche :
classe :
modificateur : "public"
anyOf :
- enfant :
méthode :
annotation :
type : "Test"
Je peux à nouveau modifier la définition de la classe avec l'action changeModifiers.
correctifsDisponibles :
- nom : "Supprimer la visibilité publique de la classe @Test"
actions :
- changeModifiers :
visibilité : ""
Résumé
Un outil d'analyse statique m'a initialement alerté sur cette approche recommandée dans JUnit. Mais cet outil ne m'a pas aidé à acquérir le réflexe de modifier mon code au fur et à mesure que je programme.
Utilisez le « Niveau » pour vous alerter. Lorsqu'il s'agit d'un problème que j'essaie d'éliminer dans mon code, je le définis d'abord sur « Erreur », puis je réduis ce niveau à mesure que je me détache de cette approche de codage.
N'oubliez pas que vous pouvez utiliser Sensei pour corriger tous les problèmes du fichier actuel simultanément, en utilisant l'option du menu déroulant lors de l'application du correctif rapide (QuickFix).
En créant une recette Sensei, je peux visualiser mon ancienne approche de codage en temps réel. Et utiliser le QuickFix pour renforcer la nouvelle approche si je fais une erreur occasionnelle en codant.
---
Vous pouvez installer Sensei depuis IntelliJ via « Préférences \ Plugins » (Mac) ou « Paramètres \ Plugins » (Windows), puis recherchez simplement « sensei secure code ».
Le code source et les recettes correspondantes sont disponibles dans le dépôt `sensei-blog-examples` du compte GitHub de Secure Code Warrior, dans le module `junitexamples`.
Gouvernez le développement assisté par IA avant la mise en production
Évaluez les risques liés à l'IA, appliquez des politiques de codage sécurisé dès le commit et accélérez la livraison sécurisée tout au long de votre cycle de développement.
Explorer plus d'articles
Accédez à du contenu expert sur le codage sécurisé, la gouvernance de l'IA et la gestion des risques logiciels.
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Une culture de la sécurité : comment Sage a bâti son programme de champions
Découvrez comment Sage a renforcé sa sécurité grâce à une approche flexible axée sur les relations humaines, formant plus de 200 champions de la sécurité et obtenant une réduction mesurable des risques.

Mois de la sensibilisation à la cybersécurité 2026 : comprendre la sécurité de l'IA est essentiel à la défense de l'entreprise
Nous avons atteint un point où la plupart des grandes entreprises d'IA ont publiquement appelé à un ralentissement mondial du développement de l'IA afin de permettre aux garde-fous de sécurité de rattraper leur retard. Pourtant, la réalité est que de graves problèmes de sécurité se sont déjà concrétisés. Cela place d'innombrables responsables de la sécurité et équipes de direction dans une situation d'urgence, alors que les coûts financiers et les risques liés à la mise en œuvre de l'IA ne cessent de s'accumuler.

Levier 8 : Valoriser votre programme
Un programme de codage sécurisé a besoin de plus qu'un contenu de qualité pour réussir. Le levier 8 montre comment l'image de marque transforme la participation en une expérience convoitée, axée sur le statut.
.avif)
Chaque employé est désormais en première ligne de la cybersécurité IA
Le paysage technologique des entreprises évolue à une vitesse que peu avaient anticipée avant qu'il ne soit trop tard. Nous avons officiellement franchi le cap du code écrit par l'humain et de l'assistance basique par copilote pour entrer dans l'ère du cycle de vie de développement agentique (ADLC). Si les agents IA autonomes promettent une efficacité sans précédent dans de multiples fonctions, ils apportent également une toute nouvelle catégorie de risques en matière de sécurité et de réglementation.
Sécurisez le développement piloté par l'IA avant le déploiement
Identifiez les risques de développement, appliquez vos politiques et prévenez les vulnérabilités tout au long du cycle de vie de vos logiciels.
