java junit在测试执行后未清理记录器
我正在为一些遗留代码创建一些junit测试。在这些类中,有许多对记录器的调用,记录器是java的一个自定义子类。util。登录中。记录器。对于每个调用,处理记录器的类都会检查记录器是否已初始化,并使用java语言按名称检索它。util。登录中。后勤经理。
我的问题是,如果我连续运行两个测试用例,我会得到一个类强制转换异常。我调查了一会儿,发现当第二个测试运行时,LogManager会找到一个记录器的现有实例,但是如果我在该记录器上调用logger instanceof MyLogging.class
,我会得到一个false
,如果我调用logger.getClass()
,我会得到MyLogging.class
我的假设是junit没有清理两个测试之间的所有资源。记录器的一个实例仍保留在内存中,但不知何故它被转换到了超类
我试图创建一个用@After
注释的撕裂方法,在我调用的方法LogManager.reset()
中。它不起作用,javadoc说这个方法删除了所有的处理程序,但它没有提到记录器,所以它似乎不是我需要的功能。我搜索了所有的文档,想找到一种删除记录器的方法,但什么也找不到
我不知道它是否相关,但5个测试类中有2个被注释为:@RunWith(PowerMockRunner.class)
任何关于如何正确清理资源或移除记录器的想法都将受到高度赞赏
共 (0) 个答案