Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

239
Vistas
JUnit5: acceda al campo de extensión desde la clase de prueba

Necesito usar extensiones para ejecutar el código antes y después de todos los casos de prueba en las clases que lo usan. Mis clases de prueba necesitan acceder a un campo en mi clase de Extensión. es posible?

Dado:

 @ExtendWith(MyExtension.class) public class MyTestClass { @Test public void test() { // get myField from extension and use it in the test } }

y

 public class MyExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback { private int myField; public MyExtension() { myField = someLogic(); } ... }

¿Cómo accedo a myField desde mi clase de prueba?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede lograr esto a través de una anotación de marcador y una extensión BeforeEachCallback .

Cree una anotación de marcador especial, por ejemplo

 @Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface MyField { }

Use la anotación para encontrar y establecer los valores desde dentro de la extensión:

 import org.junit.jupiter.api.extension.BeforeEachCallback; public class MyExtension implements BeforeEachCallback { @Override public void beforeEach(final ExtensionContext context) throws Exception { // Get the list of test instances (instances of test classes) final List<Object> testInstances = context.getRequiredTestInstances().getAllInstances(); // Find all fields annotated with @MyField // in all testInstances objects. // You may use a utility library of your choice for this task. // See for example, https://github.com/ronmamo/reflections // I've omitted this boilerplate code here. // Assign the annotated field's value via reflection. // I've omitted this boilerplate code here. } }

Luego, en sus pruebas, anota el campo de destino y amplía la prueba con su extensión:

 @ExtendWith(MyExtension.class) public class MyTestClass { @MyField int myField; @Test public void test() { // use myField which has been assigned by the extension before test execution } }

Nota: alternativamente, puede extender BeforeAllCallback que se ejecuta una vez antes de todos los métodos de prueba de la clase, según sus requisitos reales.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda