Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

237
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!