Digamos que eu tenha uma superclasse abstrata e uma classe de teste abstrata para testar subclasses.
abstract class Superclass {
}
@RequiredArgsConstructor
abstract class SuperclassTest<T extends Superclass> {
SuperclassTest(Class<T> typeClass) {
super();
this.typeClass = typeClass;
}
@Nested
class ToStringTest {
@Test
void _NotBlank_NewInstance() {
String string = newInstance().toString();
assertThat(string).isNotBlank();
}
}
final Class<T> typeClass;
}
Agora, como posso substituir a classe/método de teste aninhado para desabilitar ou modificar?
class SomeTest extends SuperclassTest<Some> {
SomeTest() {
super(Some.class)
}
// How can I disable or change ToStringTest#_NotBlank_NewInstance?
}
Se você precisar estender a classe interna
ToStringTest
dentro deSomeTest
, e sobrescrever o método_NotBlank_NewInstance()
, você pode criar uma subclasseSomeToStringTest
emSomeTest
e fazê-la estenderSuperclassTest.ToStringTest
. Neste ponto, você pode sobrescrever_NotBlank_NewInstance()
com o comportamento desejado.Estou colocando minha própria resposta com base na resposta aceita .