我需要创建一个现有服务端点的版本2。在创建单元测试时,我意识到测试新代码的最有效方法是从现有的单元测试类扩展。
设置、拆除和存根方法已经完成,并且相当复杂。出于冗余的原因,我不想将它们复制到新的单元测试中,而且我不能将它们移动到实用程序类中,因为在一些存根类中有一些紧密耦合的逻辑。
当我运行新的单元测试时,我看到继承的单元测试也在运行,这不是我想要的。是否有人成功地从基本单元测试继承而不运行它的任何@Test类?
下面是一个基类的例子:
@SpringBootTest
@ContextConfiguration
@ExtendWith(MockitoExtension.class)
@AutoConfigureMockMvc
public class MyBaseClass extends TestBase {
@Value("${test.foo}")
private String foo
// setup, teardown, stubbing to pull in data to run the tests AND then the tests themselves
}
@SpringBootTest
@ContextConfiguration
@ExtendWith(MockitoExtension.class)
@AutoConfigureMockMvc
public class MyVersion2BaseClass extends MyBaseClass {
/* JUST THE TESTS, NO SETUP/TEAR DOWN/STUBBING NEEDED
AS THIS IS CONTAINED IN THE PARENT CLASS
*/
}
我最终将所有的设置/拆除/存根代码移到一个抽象类中。
现在我的两个版本的测试只是从抽象扩展,所有的管理代码对他们可用。