Enregistrez ce que vous avez utilisé pour tester Spring Boot comme rappel
@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.
@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