【发布时间】:2018-04-14 19:28:42
【问题描述】:
运行sampleTest() 方法时,this.itemRepository.deleteAll() 会出现此错误。
@ExtendWith(SpringExtension.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Rollback(false)
public class ScheduleTests {
private static final Logger LOGGER = LoggerFactory.getLogger(ScheduleTests.class);
@Autowired
private ScheduleRepository scheduleRepository;
@Autowired
private ItemRepository itemRepository;
@Autowired
private ItemQualifierRepository itemQualifierRepository;
@Autowired
private MappingRepository mappingRepository;
@BeforeAll
public void setUp() {
restoreInitialData();
LOGGER.info("Initial data restored");
}
@Test
public void sampleTest() {
File feed = new File("target/test-classes/TestFeedOK.json");
Feed.ingest(feed);
LOGGER.info("Feed {} ingested", feed.getName());
}
private void restoreInitialData() {
this.itemRepository.deleteAll();
this.mappingRepository.deleteByTableName("event");
}
}
给restoreInitialData()添加@Transactional注解并不能解决问题-https://stackoverflow.com/a/32552558/3536552
你知道怎么解决吗?
【问题讨论】:
-
你有没有尝试让整个班级
@Traansactional? -
@pvpkiran 是的,我试过了,但没有帮助
-
您使用的是哪个版本的 Spring Boot。因为在最新版本中
AutoConfigureTestDatabase已弃用 -
@pvpkiran 我用
2.0.0.M5 -
我认为问题是
restoreInitialData是从设置中调用的,这是一个@BeforeAll方法。可能是春天还没有介入创建交易。只需将其更改为@BeforeEach并检查并使用@Transactional。只是猜测
标签: java spring hibernate spring-boot