spring boot junit测试+@需要事务性传播\u新建

spring boot junit测试+@需要事务性传播\u新建,spring,junit,spring-boot,transactions,spring-test,Spring,Junit,Spring Boot,Transactions,Spring Test,我想测试一个保存到数据库中的循环。 我在内存中建立了一个数据库,并加载了我的场景。 我有一个名为basicinitest的基本测试类,如下所示 RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = CentralApplication.class) @WebAppConfiguration @Transactional @Ignore public class BasicInitTest

我想测试一个保存到数据库中的循环。 我在内存中建立了一个数据库,并加载了我的场景。 我有一个名为
basicinitest
的基本测试类,如下所示

RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = CentralApplication.class)
@WebAppConfiguration
@Transactional
@Ignore
public class BasicInitTest {
.......
}
我所有的测试类都扩展了它,每个类都有多个
@test
方法。特别是其中一个调用a
FooServiceImpl.iterateAndSave(List)
,它迭代列表并尝试保存单个对象

Save方法由
FooServiceImpl.Save(Foo)
执行,该方法用
@Transactional(传播=传播.必需\u新建)
注释。此方法在通过
FooRepository.save(Foo)
保存之前,尝试查找要引发异常或保存的对象

@Transactional(propagation=Propagation.REQUIRED_NEW)
public Foo save(Foo foo) throws Exception {
   Foo f = fooRepository.findById(foo.getId);
   if(f) throw new Exception("ex");
   return fooRepository.saveAndFlush(foo);
}
像上面的测试一样,在服务的第一行仍然处于暂停状态,而不是在没有
@Transactional(propagation=propagation.REQUIRED\u NEW)
的情况下,它可以工作

我必须使用
@Transactional
进行注释,以防止
FooServiceImpl.iterateAndSave(List)
中出现异常,因为这有一个循环来迭代每个模型对象以执行某些操作,然后保存对象

事实上,如果我删除注释,并且保存操作出现异常,比如
ConstraintViolationException
,当下一个对象被保存时,我会得到这个错误

HHH000099: an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session): org.hibernate.AssertionFailure: null id in com.projecy.Foo entry (don't flush the Session after an exception occurs)
如何测试这个场景