[JAVA] Annotations fréquentes pour les tests Spring Boot

Enregistrez ce que vous avez utilisé pour tester Spring Boot comme rappel

Test de l'unité

@RunWith Différentes classes de coureurs peuvent être spécifiées La classe Runner contrôle le type de test effectué.

@RunWith(SpringRunnner.class) Requis lors des tests avec DI

@RunWith(SpringRunnner.class)
public class SampleClassTest {

  @Autowired
 private HogeService hogeService; // Service étant DI

}

--Lorsque vous souhaitez simuler une classe à réaliser automatiquement, réécrivez-la dans @MockBean sans utiliser @Autowired.

@RunWith(MockitoJUnitRunner.class) Obligatoire si vous souhaitez vous moquer d'une classe parmi les classes testées

@RunWith(MockitoJUnitRunner.class)
public class SampleClassTest {

  @Mock
 private HogeService hogeService; // Classes qui ne fonctionneront probablement pas

  @Test
 public void Système normal () {

    Fuga fugaMock = mock(Fuga.class);
    when(hogeService.get()).thenReturn(fugaMock);
 /// La valeur de retour de get () de HogeService sera la classe Fuga.

    ...

  }
}

@RunWith(PowerMockRunner.class) Nécessaire lorsque vous devez vous moquer des méthodes statiques

@RunWith(PowerMockRunner.class)
 @PrepareForTest ({HogeService.class}) // Classe contenant des méthodes statiques
public class SampleClassTest {

  @Before
  public void setUp() {
    PowerMockito.mockStatic(HogeService.class);
  }

  @Test
 public void Système normal () {

    HogeService hogeMock = mock(HogeService.class);
    Fuga fugaMock = mock(Fuga.class);
    when(hogeMock.get()).thenReturn(fugaMock);
 /// La valeur de retour de get () de HogeService sera la classe Fuga.

    ...

  }
}

@DataJpaTest Il prend en charge les tests uniquement entre l'entité et le référentiel. Chargez dans la classe ApplicationContext avec @Entity et @Repository.

@AutoConfigureTestDatabase En définissant @AutoConfigureTestDatabase (replace = AutoConfigureTestDatabase.Replace.NONE), vous pouvez utiliser le jeu de bases de données dans l'application.

@TestExecutionListeners Vous pouvez configurer des écouteurs qui surveillent les tests et fournissent une variété de fonctionnalités.

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@TestExecutionListeners({
    TransactionalTestExecutionListener.class,
    DbUnitTestExecutionListener.class})
@DbUnitConfiguration(
    dataSetLoader = ReplacementCsvDataSetLoader.class
)
public class RepositoryTest {

  @DatabaseSetup("/sample/")
  @Test
 public void Système normal () {

    ...

  }
}

table-ordering.txt


sample_table

sample_table.csv


id,name,age
1,Tanaka,20
2,Suzuki,24

--TransactionalTestExecutionListener fournit une fonctionnalité de gestion des transactions. --DbUnitTestExecutionListener fournit des fonctions liées à la base de données telles que @DatabaseSetup.

Autres auditeurs susceptibles d'être spécifiés

ServletTestExecutionListener: Fournit la possibilité de configurer une API de servlet fictive qui prend en charge le test de WebApplicationContext.

DirtiesContextBeforeModesTestExecutionListener: Assure la fonction de gestion du cycle de vie du conteneur DI utilisé dans le test. Appelé avant d'exécuter une classe de test ou une méthode de test.

DependencyInjectionTestExecutionLiLstener: Fournit la fonctionnalité DI pour l'instance utilisée dans le test.

SqlScriptsTestExecutionListener: Fournit la possibilité d'exécuter le SQL spécifié par l'annotation @Sql.

Test combiné

@SpringBootTest Fournit la fonctionnalité Spring Boot (lit application.properties et yml) Par défaut, l'application ne démarre pas, mais si vous la définissez, elle démarre.

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestExecutionListeners(
        listeners = {
                TransactionalTestExecutionListener.class,
                DbUnitTestExecutionListener.class},
        mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS
)
@DbUnitConfiguration(
        dataSetLoader = ReplacementCsvDataSetLoader.class
)
public class FunctionalTest {

  @DatabaseSetup("/sample/")
  @Test
 public void Système normal () {

 Resource sampleJson = resourceLoader.getResource ("/ response / normal system.json");
    String jsonText = FileUtils.readFileToString(responseResource.getFile(),UTF_8);

    ResponseEntity actual = testRestTemplate.exchange(
        "/top",
        HttpMethod.GET,
        new HttpEntity<>(null,null),String.class
    );
    String actualText = actual.getBody().toString();
 ... // affirmer et vérifier

  }
}

@AutoConfigureMockMvc Reproduisez le fonctionnement de Spring MVC. Vous pourrez tester la communication entre Controller↔︎Views.

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestExecutionListeners(
        listeners = {
                TransactionalTestExecutionListener.class,
                DbUnitTestExecutionListener.class},
        mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS
)
@DbUnitConfiguration(
        dataSetLoader = ReplacementCsvDataSetLoader.class
)
@AutoConfigureMockMvc
public class FunctionalTest {

  @DatabaseSetup("/sample/")
  @Test
 public void Système normal () {

 MvcResult result = mockMvc.perform (get ("/ top")) // Spécification d'URL
 .andExpect (status (). isOk ()) // Vérifier l'état HTTP
 .andExpect (view (). name ("top")) // Vérifier HTML
          .andReturn();

    ...

  }
}

-Si vous appuyez sur / top et que le statut 200 est retourné et que vous pouvez voir top.html, cela semble OK

Recommended Posts

Annotations fréquentes pour les tests Spring Boot
Remarques sur les annotations lors de l'écriture de tests pour Spring Boot
Spring Boot pour l'apprentissage des annotations
Spring Boot pour la première fois
Utiliser DBUnit pour le test Spring Boot
Utilisez Spring Test + Mockito + JUnit 4 pour le test unitaire Spring Boot + Spring Retry
Mémorandum WebMvcConfigurer de Spring Boot 2.0 (printemps 5)
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Introduction du livre: Spring Boot Livre de référence recommandé pour les débutants!
Annotations utilisées dans les outils de gestion des tâches Spring Boot
Plans pour prendre en charge JDK 11 pour Eclipse et Spring Boot
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Fiche d'apprentissage SPRING BOOT 01
Comment définir l'injection de dépendance Spring Boot (DI)
Botte de printemps + Heroku Postgres
Comment écrire un test unitaire pour Spring Boot 2
Rédaction de mémo de démarrage de printemps (1)
Première botte à ressort (DI)
Fiche d'apprentissage SPRING BOOT 02
[Spring Boot] Comment créer un projet (pour les débutants)
Customizer pour Platform Transaction Manager ajouté à partir de Spring Boot 1.5
Gestion des exceptions Spring Boot
Mappage du servlet Spring Boot
Environnement de développement-développement Spring Boot-
Procédure d'apprentissage Spring Boot
Apprentissage de Spring Boot [Début]
Rédaction de mémos de démarrage de printemps (2)
Résumé du document Spring Boot 2.2
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Disponibilité de l'application Spring Boot 2.3
Tutoriels Spring Boot Sujets
Télécharger avec Spring Boot
Changez la cible d'injection pour chaque environnement avec Spring Boot 2
Une introduction pratique pour les débutants de Spring 5 et Spring Boot 2 a été publiée
Je n'ai pas compris Spring Boot depuis un mois
Présentation de Spring Boot2, un framework Java pour le développement Web (pour les débutants)
Diverses applications de commutation.properties pour chaque environnement au démarrage de Spring Boot
[Java] Exemple de projet de développement d'applications Web avec Spring Boot
[Spring Boot] Construction de l'environnement (macOS)
Essayez Spring Boot de 0 à 100.
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Spring Boot sur Microsoft Azure
Implémenter GraphQL avec Spring Boot
Calendrier des tâches du didacticiel Spring Boot
Spring 5 et Spring Boot 2 Procédure de préparation pratique
Démarrez avec Spring Boot
Multi-projets Spring Boot 2 avec Gradle
[Spring Boot] Création d'applications Web
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Paramètres d'échange à chaud Spring Boot
Introduction à Spring Boot ① ~ DI ~
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Introduction à Spring Boot ② ~ AOP ~
Application Java CICS-Run - (4) Application Spring Boot
Spring Boot à partir de Docker