[JAVA] Überschreiben Sie den Inhalt der Konfiguration mit Spring-boot + JUnit5

Einführung

Wenn Sie Mockito verwenden, können Sie es sofort verwenden, aber ich wollte es notieren, also habe ich es als Artikel geschrieben.

Umgebung

Java9 Spring-boot 2.0.0.RELEASE

Diesmal das Ziel

Schreiben Sie den in der Service-Klasse von Junit festgelegten Konfigurationssatz neu, anstatt die Testkonfigurationsdatei zu lesen.

pom.xml Es ist in anderen Artikeln geschrieben, aber ich werde es immer überprüfen, also werde ich es in der Zwischenzeit schreiben.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.tasogarei</groupId>
	<artifactId>junit-test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>junit-test</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>9</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <version>1.0.1</version>
            <scope>test</scope>
        </dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

Service Es gibt eine mysteriöse private Methode, aber ich möchte danach nur noch etwas anderes ausprobieren. Bitte mach dir keine Sorgen.

package com.tasogarei.app.service;

import java.util.Properties;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.tasogarei.app.util.TestConfig;

@Service
public class TestService {
    
    @Autowired
    private TestConfig config;
    
    public String getString() {
        return getStr();
    }
    
    private String getStr() {
        return config.getTest();
    }    
}

config Dieses Mal werden wir dies basierend auf der Konfigurationsanmerkung tun.

package com.tasogarei.app.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TestConfig {
    @Value("${app.test}") 
    private String test;

    public String getTest() {
        return test;
    }

    public void setTest(String test) {
        this.test = test;
    }
}

application.properties


app.test=configtest

Geben Sie einen geeigneten Wert in application.properties ein.

Testklasse

Wenn Sie es mit @ MockBean in Mock konvertieren und den Inhalt ausführen, den Sie mit Mockito.when () umschreiben möchten. Dann () wird die Person verwendet, die es im Test in Mock konvertiert hat. Dies ist also in Ordnung. Selbst wenn der Rückgabewert der durch "when" angegebenen Methode eine Klasse ist, wird diese Klasse verwendet, wenn Sie die Klasse eingeben, mit der Sie "then" umschreiben möchten, damit Sie damit testen können. Natürlich müssen die Typen gleich sein.

package com.tasogarei.app.service;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.util.Properties;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import com.tasogarei.app.util.TestConfig;

@ExtendWith(SpringExtension.class)
@SpringBootTest
public class TestServiceTest {

    @Autowired
    private TestService testService;
    
    @MockBean
    private TestConfig testConfig;
    
    @Test
    public void test() {
        Mockito.when(testConfig.getTest()).thenReturn("hogehoge123");
        assertEquals(testService.getString(), "hogehoge123");
    }
}

Schließlich

Ich bin der Meinung, dass das Umschreiben mit der Testmethode subtil ist, daher denke ich, dass es besser ist, das zu tun, was vor der Verarbeitung dort getan werden kann.

Recommended Posts

Überschreiben Sie den Inhalt der Konfiguration mit Spring-boot + JUnit5
Testen Sie den Inhalt einer Excel-Datei mit JUnit
Überprüfen Sie den Inhalt der Parameter mit pry
Formatieren Sie den Inhalt von LocalDate mit DateTimeFormatter
Überprüfen Sie den Inhalt des Argumentobjekts mit Mockito
Listen Sie den Inhalt von Kategorien auf, die mit Active Hash erstellt wurden
[JUnit 5] Der Umgang mit "der Referenz von assertEquals ist mehrdeutig"
Ändern Sie den Port mit SpringBoot
[Schienen] Überprüfen Sie den Inhalt des Objekts
Ersetzen Sie den Inhalt der Jar-Datei
Die Grundlagen von SpringBoot + MyBatis + MySQL
[Ruby] Zeigt den Inhalt von Variablen an
Probieren Sie HelloWorld mit der Mindestkonfiguration von Heroku Java Spring-Boot aus
Überschreiben Sie den gleichnamigen Upload mit dem BOX SDK (Java).
Überprüfen Sie den Inhalt des Java-Zertifikatspeichers
Anmerkung: [Java] Überprüfen Sie den Inhalt des Verzeichnisses
Ein- und Ausklappen des Inhalts der Recycler-Ansicht
[Ruby] Schneiden Sie den Inhalt von Twitter-Anzeigen ab
Überprüfen Sie den Verarbeitungsinhalt mit [Rails] Binding.pry
Verwenden Sie SSIServlet mit dem in SpringBoot 2.2.4 integrierten Tomcat
Über die Behandlung von BigDecimal (mit Reflexion)
Der Inhalt der von CarrierWave gespeicherten Daten.
[Java] Holen Sie sich MimeType aus dem Inhalt der Datei mit Apathce Tika [Kotlin]
Immerhin wollte ich den Inhalt von MySQL mit Docker in der Vorschau anzeigen ...
JAVA: jar, aar, zeige den Inhalt der Datei an
Passen Sie an, wie der Inhalt von Recyclerview aufgeteilt wird
Einfacher JUnit-Test der Elasticsearch 2018-Version mit Embedded-Elasticsearch
Verwalten Sie die Version von Ruby selbst mit rbenv
Die Geschichte der Optimierung der Android-App mit libGDX
Ich möchte den Inhalt der Absicht var_dump
Berechnen Sie die Ähnlichkeitsbewertung von Zeichenketten mit JAVA
Bereiten Sie die CentOS 8-Umgebung mit Sakura VPS vor
Geben Sie den Standardwert mit @Builder of Lombok an
Messen Sie den Abstand des Labyrinths mit der Suche nach Breitenpriorität
Ich habe die Anzahl der Taxis mit Ruby überprüft
[Docker] So sehen Sie den Inhalt von Volumes. Starten Sie einen Container mit Root-Rechten.
Implementieren wir eine Funktion, um die Anzahl der Zugriffe auf die API mit SpringBoot + Redis zu begrenzen
Fehler beim Starten von JUnit mit veralteter POI-Version
Ich habe den Lebenszyklus der Erweiterung von JUnit Jupiter untersucht
JavaFX - Passen Sie die Größe von ImageView an andere Knoten an
Rufen Sie den Namen des Testfalls in der JUnit-Testklasse ab
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
Die Geschichte, einen Reverse-Proxy mit ProxyServlet zu erstellen
Überwachen Sie den internen Status von Java-Programmen mit Kubernetes
Implementieren Sie iOS14 UICollectionView mit dem minimal erforderlichen Code.
Überprüfen Sie das Verhalten von Java Intrinsic Locks mit bpftrace
Persönliche Zusammenfassung der in JUnit 4 häufig verwendeten Typen
Web-API-Komponententest und Integrationstest mit SpringBoot + Junit5, 4 Muster
[Rails] So erhalten Sie den Inhalt starker Parameter
Überprüfen Sie das Ergebnis der generischen Parameterinferenz mit JShell
Java: Verwenden Sie Stream, um den Inhalt einer Sammlung zu sortieren
Etwa der Ablauf der Entwicklung von Webanwendungen mit Rails.
Steuern Sie den Spring Batch-Verarbeitungsablauf mit JavaConfig.
Die Geschichte von dto, dao-like mit Java, SQLite
Ersetzen Sie nur einen Teil des URL-Hosts durch Java
Ich möchte den Inhalt von Assets in der mit capistrano erstellten Umgebung von Grund auf neu erstellen