我有一个包含两个方法测试的测试类。这些测试方法使用@Order注释按一定顺序执行,效果很好。第一种方法在h2中插入一个ID值为21的已知值(确实,相信我,在启动时,我在spring启动时创建了20个值,在带有@SpringBootApplication的spring应用程序配置类中),这是在测试层:
用户userStub =新用户(“ prenom21”,“ Nom21”))
该脚本可在此处查看或下载(可以运行以查看错误):https : //github.com/userInterview/LoizSpringRestPersistenceTests/blob/main/src/test/java/org/loiz/demo/LoizPersistenceTest。爪哇
下面,在写入粗体(线65)的代码行,我应该有一个对象UserRead由第一测试方法创建的对象,但我空对象。这正常吗?
@Test
@Order(2)
@DisplayName("Test de suppression du user \"prenom21 Nom21\"")
public void readShouldMapCorrectly() throws Exception {
User userStub = new User(idStub, "prenom21", "Nom21");
User UserRead = this.testEntityManager.find(User.class, idStub) ;
Assert.assertTrue(userStub.equals(UserRead));
}
package org.loiz.demo;
import org.assertj.core.api.BDDAssertions;
import org.junit.Assert;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Test ;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.Order ;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import demo.LoizBootSpringDemoApplication;
import demo.crepository.UserRepositoryInterface;
import demo.dmodel.User;
//Test de la couche de persistence
@RunWith(SpringRunner.class)
@DataJpaTest
@ContextConfiguration(classes = { LoizBootSpringDemoApplication.class})
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class LoizPersistenceTest
{
@Autowired
private TestEntityManager testEntityManager;
@Autowired
private UserRepositoryInterface repository;
private static Long idStub ;
@Test
@Order(1)
@DisplayName("Test de sauvegarde d\'un user \"prenom21 Nom21\"")
public void saveShouldMapCorrectly() throws Exception {
User userStub = new User("prenom21", "Nom21");
User UserSaved = this.testEntityManager.persistFlushFind(userStub);
BDDAssertions.then(UserSaved.getId()).isNotNull();
idStub = UserSaved.getId() ;
User UserRead = this.testEntityManager.find(User.class, idStub) ;
BDDAssertions.then(UserSaved.getFirstName()).isNotBlank();
BDDAssertions.then(UserSaved.getFirstName()).isEqualToIgnoringCase("prenom21");
BDDAssertions.then(UserSaved.getLastName()).isEqualToIgnoringCase("Nom21");
BDDAssertions.then(UserSaved.getLastName()).isNotBlank();
}
@Test
@Order(2)
@DisplayName("Test de suppression du user \"prenom21 Nom21\"")
public void readShouldMapCorrectly() throws Exception {
User userStub = new User(idStub, "prenom21", "Nom21");
User UserRead = this.testEntityManager.find(User.class, idStub) ;
Assert.assertTrue(userStub.equals(UserRead));
}
}
我希望对这个问题有所了解:)
在运行这些测试时,spring在每种测试方法之后都会执行完整的回滚。在执行写入的测试中,添加
@Rollback(false)
从 org.springframework.test.annotation.Rollback;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句