Wenn Sie Mockito verwenden, können Sie es sofort verwenden, aber ich wollte es notieren, also habe ich es als Artikel geschrieben.
Java9 Spring-boot 2.0.0.RELEASE
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.
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");
}
}
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