En caso @Autowired y @SpringBootTest ser utilizados en las pruebas unitarias?

jamón:

En un proyecto en el que trabajo, hemos estado inicializando Servicios para la unidad de prueba de la siguiente manera:

  1. dependencias simulacros que son necesarios para el servicio.
  2. Crear el servicio utilizando un constructor.

Algo como esto :

@RunWith(SpringRunner.class)
public class ServiceTest extends AbstractUnitTest {

  @Mock private Repository repository;
  private Service service;

  @Before
  public void init() {
    service = new Service(repository);
    when(repository.findById(any(Long.class))).thenReturn(Optional.of(new Entity()));
  }
}

Sin embargo, nuestro nuevo desarrollador propone utilizar @Autowiredy@SpringBootTest

@SpringBootTest(classes = ServiceTest.class)
@MockBean(classes = Repository.class)
@RunWith(SpringRunner.class)
public class ServiceTest extends AbstractUnitTest {

  @MockBean private Repository repository;
  @Autowired private Service service;

  @Before
  public void init() {
    when(repository.findById(any(Long.class))).thenReturn(Optional.of(new Entity()));
  }
}

Antes de eso, se supone que @Autowiredy @SpringBootTestsolamente debe ser usada en las pruebas de integración. Pero buscado en Google mucho y veo que algunas personas utilizan los dos en pruebas unitarias. He leído boot-funciones de prueba . Además, he leído esta pruebas unitarias frente a las pruebas de integración con la primavera . Para mí, todavía me siento doesn`t así que tenemos que involucrar a la primavera de hacer la inyección de dependencia para las pruebas unitarias, como podemos hacer esto por nosotros mismos para hacer la prueba de la unidad. Por lo tanto, debe @Autowiredy @SpringBootTestpuede utilizar en las pruebas unitarias?

chrylis -on tachado:

No. Una unidad de prueba es para probar un solo componente en forma aislada. Utilizando la inyección de constructor en sus granos le permite de manera muy sencilla llamas new SomeService(myMock), no requiere la primavera.

La escritura de componentes o funcionales pruebas (pruebas de una aplicación, pero no de conectarlo a servicios externos para una prueba plena integración, burlándose de las interfaces única externos, lo que es bueno para cosas como pruebas MockMvc) es un partido bueno para @SpringBootTest, y en ese caso es posible que necesite para crear objetos simulados en una configuración de primavera y Autowire ellos en su prueba para que pueda manipularlas.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=313455&siteId=1
Recomendado
Clasificación