最近正在使用testNG做测试,因为使用的是spring做容器所以使用spring的自带的测试支持类,出现问题的逻辑是这样,因为所做的测试是数据库相关的,所想想在方法的执行之前对数据库的相关数据进行初始化,当前业务测试方法执行完成之后再回滚数据,具体的代码如下:
public class ICoreDictServiceTest extends
CoreBaseTransactionalTestNGSpringContextTests {
@BeforeMethod
void setetUp() {
LOG.debug("开始数据加载...");
String scriptResource = "/com/risen/core/base/service/core-oracle-dataload.sql";
this.executeSqlScript(scriptResource, true);
LOG.debug("结束数据加载...");
}
@Test
public void testListCoreDict() {
int count = this.countRowsInTable("CORE_DICT");
Assert.assertEquals(count, 3);
ICoreDictService cds = this.coreDictService;
CoreGlobalContextCache cache = null ;
cache = this.coreGlobalContextCache;
CoreDictServiceImpl impl = (CoreDictServiceImpl) cds;
impl.reload();//在重建数据库之后需要重新加载字典
CoreDictWrapper dictWrapper = cache.getCoreDictWrapper();
List<CoreDict> dictList = dictWrapper.getDictList();
Assert.assertEquals(dictList.size(), 3);
}
}
在测试的时候没有什么问题是可以通过的测试的,后来由有多个测试类需要共享数据库初始化的代码 ,所以想把setUp方法抽取到超类当中去,结果测试就都失败了,在网找了很久也没找到这样的问题,最后发现将setUp方法的修饰符改为public 与 protected是可以的,不加修饰符,或使用private修饰符是不以的具体是个什么原因不清楚
对于@BeforeGroups与@BeforeMethod先后关系是@BeforeGroups方法会比@BeforeMethod方法先执行,在spring对testNG框架的支持类中执行测试的整个生命周期所有标注方法的执行顺序为:

TestNG与Spring集成测试

本文探讨了使用TestNG结合Spring框架进行数据库相关的集成测试时遇到的问题及解决方法。特别关注了如何通过抽取公共初始化代码到基类来提高测试效率,并讨论了不同访问修饰符对测试结果的影响。
487

被折叠的 条评论
为什么被折叠?



