有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案