Si vous utilisez Mockito, vous pouvez l'utiliser immédiatement, mais je voulais en prendre note, alors je l'ai écrit sous forme d'article.
Java9 Spring-boot 2.0.0.RELEASE
Réécrivez le jeu de configuration dans la classe Service de Junit au lieu de lire le fichier de configuration de test.
pom.xml Il est écrit dans d'autres articles, mais je le vérifierai toujours, donc je l'écrirai en attendant.
<?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 Il existe une méthode privée mystérieuse, mais je veux juste essayer autre chose après cela. s'il te plait ne t'inquiète pas.
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 Cette fois, nous le ferons sur la base de l'annotation de configuration.
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
Mettez une valeur appropriée dans ʻapplication.properties`.
Si vous le faites Mock avec @ MockBean
et faites le contenu que vous voulez réécrire avec Mockito.when (). Then ()
, celui qui a été transformé en Mock dans le test sera utilisé, donc ce n'est pas grave.
Même si la valeur de retour de la méthode spécifiée par when
est une classe, si vous entrez la classe que vous voulez réécrire avec then
, cette classe sera utilisée, vous pouvez donc tester avec elle.
Bien sûr, les types doivent être les mêmes.
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");
}
}
Je pense que la réécriture avec la méthode de test est subtile, donc je pense qu'il vaut mieux faire ce qui peut être fait avant le traitement là-bas.
Recommended Posts