Чтобы тестовый класс не становился слишком большим, я хочу разделить его на внешние вложенные классы. Вот так:
Код: Выделить всё
@ContextConfiguration(initializers = SuperComplicatedStuff.class)
@SpringBootTest(
classes = {Main.class},
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
/* Important to clear context,
or different tests with different database setups will destroy each other. */
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
public class Container extends AbstractTestNGSpringContextTests {
@Autowired
private MyRepository myRepository;
@Nested
class DbIntegrationTestImpl extends DbIntegrationTest {
DbIntegrationTestImpl() {
/* Passing "this", so the implementing class can access all the
autowired variables, like "myRepository". */
super(Container.this);
}
}
}
abstract class DbIntegrationTest {
private final Container parent;
public DbIntegrationTest(Container parent) {
this.parent = parent;
}
@Test
void testRepositories() {
parent.myRepository.findById(id);
}
}
Если я использую TestNGs @Factory, я теряю возможность запускать один тестовый класс автономный, который я хочу сохранить для быстрой итеративной разработки через тестирование.
Есть ли какой-нибудь способ сделать это или что-то подобное с помощью TestNG 7.14?