Вы используете аннотацию @SpringBootTest
, что означает, что вы запустите все приложение весенней загрузки. @Commit
и @Rollback
должны использоваться с @DataJpaTest
или чем-то подобным, когда ваш тест имеет значение @Transactional
, чтобы иметь хороший контроль.
Вот что я думаю:
- Либо есть проблема с TestNG и Spring, и в этом случае я мало что могу сделать
- Или ваш код неисправен. Вы пытались использовать некоторые точки останова, чтобы увидеть, проходит ли ваш код все ваши уровни.
Не могли бы вы показать больше своего кода? Тестовый код, контроллер, сервис и уровень данных. И, конечно, ваши классы конфигурации, это было бы здорово, чтобы помочь
Вы должны использовать аннотацию @Commit
, а не @Rollback
@ActiveProfiles("test")
@SpringBootTest(classes = APP.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public class IntegrationTest extends AbstractTestNGSpringContextTests {
@Test
@Commit
private void m1() {
}
}
В качестве альтернативы, Вы можете использовать TransactionTemplate
для более детального контроля. Смотрите это: Как принудительно зафиксировать транзакцию в тесте Spring Boot? .