Modificación de la visibilidad del método y la clase para JUnit 5

Modificación de la visibilidad del método y la clase para JUnit 5
Uno de los placeres de la programación es el aprendizaje constante que se requiere para mantenerse al día. Uno de los problemas es que generamos familiaridad y patrones de uso que pueden influir en la adopción de nuevos enfoques. Sensei puede ayudar a la migración identificando los patrones obsoletos y proponiéndonos la solución que podamos usar en el futuro.
Por ejemplo, cuando migré de JUnit 4 a JUnit 5, estaba acostumbrado a escribir todas mis clases y métodos de prueba como públicos. Pero con JUnit 5 pueden ser paquetes privados.
por ejemplo, en lugar de:
clase pública JUnit5VisibilityTest {
@Test
public void ThisDoesNoNeToBePublic () {
assertions.assertTrue (verdadero);
}
}
Tengo muchas ganas de escribir:
clase JUnit5VisibilityTest {
@Test
void Esto no necesita ser público () {
assertions.assertTrue (verdadero);
}
}
Me llevó un tiempo desarrollar la memoria muscular necesaria para codificar esto, y todavía me equivoco de vez en cuando.
Uso de Sensei
Con Sensei puedo crear recetas que encuentren los métodos y clases públicos y modificar las declaraciones para que sean paquetes privados automáticamente.
Para lograrlo he creado una receta:
Nombre - JUnit: los métodos de prueba de JUnit 5 no necesitan ser públicos
Descripción: los métodos de prueba de JUnit 5 no necesitan visibilidad pública
Nivel: error
Lo clasifiqué como Error porque quiero acabar con esta práctica de codificación y quiero una mayor visibilidad del problema cuando escribo código en el IDE.
Modificación de la declaración de clase
Para encontrar las clases, busco cualquier clase que tenga una anotación secundaria de @Test de Junit 5, es decir, org.junit.jupiter.api.test
Y cuando la clase tiene un modificador público:
buscar:
clase:
con:
niño:
anotación:
tipo: «org.junit.jupiter.api.test»
modificador: «público»
Luego, la solución rápida cambia el modificador para eliminar la visibilidad y que sea la predeterminada, y la predeterminada es package private, que es lo que estoy buscando.
Correcciones disponibles:
- nombre: «eliminar la visibilidad pública de la clase de prueba JUnit 5"
acciones:
- Modificadores de cambio:
visibilidad: «»
Modificación de las declaraciones de métodos
La receta de modificación de la declaración del método es muy parecida a la receta de la clase.
Primero busco métodos públicos anotados con @Test de JUnit 5.
buscar:
método:
anotación:
tipo: «org.junit.jupiter.api.test»
modificador: «público»
Y luego cambio el modificador para que sea la visibilidad predeterminada.
Correcciones disponibles:
- nombre: «Eliminar la visibilidad pública del método @Test»
acciones:
- Modificadores de cambio:
visibilidad: «»
Sugerencia: modificar varios métodos
Sensei tiene la capacidad de aplicar el QuickFix a todas las infracciones del archivo actual.
Cuando uso alt+enter para aplicar el QuickFix.
Si amplío el menú de nombres de QuickFix, aparece una opción para:
«Solucionar todos: 'JUnit: los métodos de prueba de JUnit 5 no necesitan ser públicos' en el archivo»
Cuando selecciono esa opción, Sensei modificará todas las ocurrencias del problema, no solo la que yo seleccione.

Modificación de la clase
De la misma manera que un método no necesita ser público, tampoco la clase.
Puedo crear una receta y un QuckFix para modificar la clase.
Nombre - JUnit: Las clases de prueba de Junit 5 no necesitan ser públicas
Descripción: las clases de prueba de Junit 5 no necesitan ser públicas
Nivel: error
Cuando encuentro una clase que es pública y tiene un método con una anotación @Test. Entonces quiero cambiar la visibilidad.
buscar:
clase:
modificador: «público»
Cualquiera de:
- niño:
método:
anotación:
tipo: «Prueba»
Puedo volver a hacer el cambio en la definición de la clase con la acción ChangeModifiers.
Correcciones disponibles:
- nombre: «Eliminar la visibilidad pública de la clase @Test»
acciones:
- Modificadores de cambio:
visibilidad: «»
Resumen
Una herramienta de análisis estático me alertó inicialmente sobre este enfoque recomendado en JUnit. Pero la herramienta de análisis estático no me ayudó a desarrollar la memoria muscular necesaria para cambiar mi código mientras programaba.
Usa el «Nivel» para avisarte. Cuando se trata de un problema que intento eliminar en mi codificación, primero lo cometo como «error» y luego lo reduzco a medida que me voy alejando del enfoque de codificación.
Recuerde que puede usar Sensei para corregir todos los problemas del archivo actual al mismo tiempo, mediante la opción del menú desplegable al aplicar el QuickFix.
Al crear una receta de Sensei, puedo ver mi antiguo enfoque de codificación en tiempo real. Y corríjalo rápidamente para reforzar el enfoque si de vez en cuando me equivoco al programar.
---
Puede instalar Sensei desde IntelliJ mediante «Preferencias\ Plugins» (Mac) o «Configuración\ Plugins» (Windows) y, a continuación, buscar «código seguro de sensei».
El código fuente y las recetas para ello se encuentran en el repositorio `sensei-blog-examples` de la cuenta de GitHub de Secure Code Warrior, en el módulo `junitexamples`.
Govern AI-driven development before it ships
Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.
Explore more blogs
Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.
%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

One Culture of Security: How Sage built their security champions program with agile secure code learning
Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Post-Quantum Cryptography: Quantum Computers Will Break Today’s Encryption – Are You Ready?
Post-quantum cryptography (PQC) is critical for protecting data from quantum computing threats. Learn how “harvest now, decrypt later” exposes risk and how developers can prepare for quantum-safe security.

Observe and Secure the ADLC: A Four-Point Framework for CISOs and Development Teams Using AI
While development teams look to make the most of GenAI’s undeniable benefits, we’d like to propose a four-point foundational framework that will allow security leaders to deploy AI coding tools and agents with a higher, more relevant standard of security best practices. It details exactly what enterprises can do to ensure safe, secure code development right now, and as agentic AI becomes an even bigger factor in the future.
Secure AI-driven development before it ships
See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.