[JAVA] Häufige Anmerkungen für Spring Boot-Tests

Notieren Sie als Erinnerung, was Sie zum Testen von Spring Boot verwendet haben

Gerätetest

@RunWith Es können verschiedene Runner-Klassen angegeben werden Die Runner-Klasse steuert, welche Art von Test durchgeführt wird.

@RunWith(SpringRunnner.class) Erforderlich beim Testen mit DI

@RunWith(SpringRunnner.class)
public class SampleClassTest {

  @Autowired
 private HogeService hogeService; // Dienst ist DI

}

@RunWith(MockitoJUnitRunner.class) Erforderlich, wenn es eine Klasse gibt, die Sie unter den getesteten Klassen verspotten möchten

@RunWith(MockitoJUnitRunner.class)
public class SampleClassTest {

  @Mock
 private HogeService hogeService; // Klassen, die wahrscheinlich nicht funktionieren

  @Test
 public void Normales System () {

    Fuga fugaMock = mock(Fuga.class);
    when(hogeService.get()).thenReturn(fugaMock);
 /// Der Rückgabewert von get () von HogeService ist die Fuga-Klasse.

    ...

  }
}

@RunWith(PowerMockRunner.class) Wird benötigt, wenn Sie statische Methoden verspotten müssen

@RunWith(PowerMockRunner.class)
 @PrepareForTest ({HogeService.class}) // Klasse mit statischen Methoden
public class SampleClassTest {

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

  @Test
 public void Normales System () {

    HogeService hogeMock = mock(HogeService.class);
    Fuga fugaMock = mock(Fuga.class);
    when(hogeMock.get()).thenReturn(fugaMock);
 /// Der Rückgabewert von get () von HogeService ist die Fuga-Klasse.

    ...

  }
}

@DataJpaTest Es werden nur Tests zwischen der Entität und dem Repository unterstützt. Laden Sie mit @Entity und @Repository in die Klasse ApplicationContext.

@AutoConfigureTestDatabase Durch Festlegen von @AutoConfigureTestDatabase (replace = AutoConfigureTestDatabase.Replace.NONE) können Sie den in der Anwendung festgelegten DB verwenden.

@TestExecutionListeners Sie können Listener einrichten, die Tests überwachen und eine Vielzahl von Funktionen bereitstellen.

@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 Normales System () {

    ...

  }
}

table-ordering.txt


sample_table

sample_table.csv


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

--TransactionalTestExecutionListener bietet Transaktionsverwaltungsfunktionen. --DbUnitTestExecutionListener bietet DB-bezogene Funktionen wie @DatabaseSetup.

Andere Listener, die wahrscheinlich angegeben werden

ServletTestExecutionListener: Bietet die Möglichkeit, eine Mock-Servlet-API zu konfigurieren, die das Testen des WebApplicationContext unterstützt.

DirtiesContextBeforeModesTestExecutionListener: Bietet die Lebenszyklusverwaltungsfunktion des im Test verwendeten DI-Containers. Wird aufgerufen, bevor eine Testklasse oder Testmethode ausgeführt wird.

DependencyInjectionTestExecutionLiLstener: Bietet DI-Funktionalität für die im Test verwendete Instanz.

SqlScriptsTestExecutionListener: Bietet die Möglichkeit, die in der Annotation @Sql angegebene SQL auszuführen.

Kombinierter Test

@SpringBootTest Bietet Spring Boot-Funktionalität (liest application.properties und yml) Standardmäßig wird die App nicht gestartet, aber wenn Sie sie festlegen, wird sie gestartet.

@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 Normales System () {

 Ressource 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();
 ... // bestätigen und überprüfen

  }
}

--Rest API Testbeispiel

@AutoConfigureMockMvc Reproduzieren Sie den Betrieb von Spring MVC. Sie können die Kommunikation zwischen Controller↔︎Views testen.

@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 Normales System () {

 MvcResult result = mockMvc.perform (get ("/ top")) // URL-Angabe
 .andExpect (status (). isOk ()) // HTTP-Status überprüfen
 .andExpect (view (). name ("top")) // HTML prüfen
          .andReturn();

    ...

  }
}

-Wenn Sie / top drücken und der Status 200 zurückgegeben wird und Sie top.html sehen können, fühlt es sich wie OK an

Recommended Posts

Häufige Anmerkungen für Spring Boot-Tests
Hinweise zu Anmerkungen beim Schreiben von Tests für Spring Boot
Spring Boot zum Lernen von Anmerkungen
Spring Boot zum ersten Mal
Verwenden Sie DBUnit für den Spring Boot-Test
Verwenden Sie Spring Test + Mockito + JUnit 4 für Spring Boot + Spring Retry Unit Test
WebMvcConfigurer-Memorandum von Spring Boot 2.0 (Spring 5)
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
Bucheinführung: Spring Boot Empfohlenes Nachschlagewerk für Anfänger!
Anmerkungen, die in Spring Boot-Aufgabenverwaltungstools verwendet werden
Pläne zur Unterstützung von JDK 11 für Eclipse und Spring Boot
Einstellungen für die Verbindung zu MySQL mit Spring Boot + Spring JDBC
SPRING BOOT Lernaufzeichnung 01
So stellen Sie Spring Boot Dependency Injection (DI) ein
Frühlingsstiefel + Heroku Postgres
So schreiben Sie einen Komponententest für Spring Boot 2
Schreiben von Frühlingsstiefel-Memos (1)
Erster Frühlingsstiefel (DI)
SPRING BOOT Lernprotokoll 02
[Spring Boot] So erstellen Sie ein Projekt (für Anfänger)
Customizer für Platform Transaction Manager aus Spring Boot 1.5 hinzugefügt
Spring Boot-Ausnahmebehandlung
Spring Boot Servlet-Zuordnung
Spring Boot Entwicklung-Entwicklungsumgebung-
Spring Boot-Lernverfahren
Spring Boot lernen [Anfang]
Schreiben von Spring Boot-Memos (2)
Spring Boot 2.2 Dokumentzusammenfassung
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Spring Boot Tutorials Themen
Mit Spring Boot herunterladen
Ändern Sie das Injektionsziel für jede Umgebung mit Spring Boot 2
Spring 5 & Spring Boot 2 Einführung für Anfänger wurde veröffentlicht
Ich habe Spring Boot seit einem Monat nicht mehr verstanden
Einführung von Spring Boot2, einem Java-Framework für die Webentwicklung (für Anfänger)
Verschiedene Switching Application.Eigenschaften für jede Umgebung, wenn Spring Boot gestartet wird
[Java] Beispielprojekt zum Entwickeln von Webanwendungen mit Spring Boot
[Spring Boot] Umgebungskonstruktion (macOS)
Versuchen Sie Spring Boot von 0 bis 100.
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Spring Boot unter Microsoft Azure
Implementieren Sie GraphQL mit Spring Boot
Aufgabenplan für das Spring Boot Tutorial
Spring 5 & Spring Boot 2 Praktisches Vorbereitungsverfahren
Beginnen Sie mit Spring Boot
Spring Boot 2 Multiprojekt mit Gradle
[Spring Boot] Erstellung von Webanwendungen
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Spring Boot Hot Swapping-Einstellungen
Einführung in Spring Boot ~ ~ DI ~
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Einführung in Spring Boot ② ~ AOP ~
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
Spring Boot beginnend mit Docker