Spring 5.0.x et Spring Boot 2.0.x ont été publiés, mais cette fois, j'écrirai ce à quoi j'étais accro lors de la refactorisation du code implémenté à l'aide de l'ancienne version de Spring.
Puisque @SpringApplicationConfiguration est obsolète depuis le printemps 1.4, je voudrais le remplacer par @SpringBootTest, qui est fourni comme une annotation alternative. L'environnement est Spring Boot (1.4.8), PowerMock (1.6.5)
En regardant le Blog officiel, il semble que vous pouvez simplement réécrire l'annotation, mais le test Lorsque j'essaye de l'exécuter, cela échoue avec une ClassNotFoundException.
TestSample.java
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@PrepareForTest(Hoge.class)
public class TestSample
{
@Before
public void setUp() throws Exception {
PowerMockito.mockStatic(Hoge.class);
}
...
}
java.lang.ClassNotFoundException: com.example.PowermockClassLoadTest$Config$$EnhancerBySpringCGLIB$$e0ecd163
Lorsque vous utilisez PowerMock v1.6.5 ou une version antérieure ensemble, il semble qu'une exception ClassNotFoundException se produit en raison d'un bogue dans PowerMock. Numéro de référence 1, Numéro de référence 2
Puisque le bogue a été corrigé dans la version 1.6.6, réécrivons non seulement l'annotation Spring, mais spécifions également la version PowerMock à 1.6.6 ou version ultérieure.
pom.xml
<dependencies>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.6</version>
<scope>test</scope>
</dependency>
</dependencies>
Recommended Posts