в моих тестах Мне нужно использовать пружинные зависимости, связанные с транзакциями и параметрами. Я нашел пример, как использовать параметризованные и DI:Как создать весенний параметризированный транзакционный тест
@RunWith(value = Parameterized.class)
@ContextConfiguration(locations = { "classpath:applicationContextTest-business.xml" })
public class TournamentServiceTest {
@Autowired
TournamentService tournamentService;
public TournamentServiceTest(int playerCount) {
this.playerCount = playerCount;
}
@Parameters
public static List<Object[]> data() {
final List<Object[]> parametry = new ArrayList<Object[]>();
parametry.add(new Object[] { 19 });
parametry.add(new Object[] { 20 });
return parametry;
}
@Before
public void vytvorTurnaj() throws Exception {
testContextManager = new TestContextManager(getClass());
testContextManager.prepareTestInstance(this);
}
@Test
public void test1() {
Assert.assertFalse(false);
}
}
этот пример работает. Теперь мне нужно добавить транзакцию к этому классу:
@RunWith(value = Parameterized.class)
@ContextConfiguration(locations = { "classpath:applicationContextTest-business.xml" })
@Transactional
@TransactionConfiguration(defaultRollback = true)
public class TournamentServiceTest ...
, когда я добавить две новые линии, то этот тест выброшенное исключение:
org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class org.toursys.processor.service.TournamentServiceTest]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
, потому что он хочет, чтобы добавить пустой конструктор:
public TournamentServiceTest() {
this.playerCount = 20;
}
, но я не могу добавить это, потому что тогда параметризованный не может запустить этот тест. Как я могу решить эту проблему?
hm thx, то я изменил концепцию моего теста. Я пропускаю аннотацию Transactional, а в аннотации After я удаляю все, что я изменил или создал в тесте – hudi