代码之家  ›  专栏  ›  技术社区  ›  martin

只有在调试模式下启动单元测试时才运行特定的@BeforeClass?

  •  0
  • martin  · 技术社区  · 7 年前

    我在TestNG中实现了一个简单的单元测试来测试消息交换。 在调试测试时,我希望运行所有日志记录器(java.util.logging)以使用日志级别运行 FINEST . 为了实现这一点,我定义了 @BeforeClass 在调试模式下(通过IntelliJ)启动javavm时,是否有可能自动启用细粒度记录器。我想影响 enabled -财产 BeforeClass -注释,但不知道这是否和如何可能。

    @BeforeClass(enabled = false)
        public void beforeClass()
        {
            Logger rootLogger = LogManager.getLogManager().getLogger("");
            rootLogger.setLevel(Level.FINEST);
            for (Handler h : rootLogger.getHandlers()) {
                h.setLevel(Level.FINEST);
            }
        }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Yoav Gur    7 年前

    你可以用 ManagementFactory.getRuntimeMXBean().getInputArguments()

    System.out.println("TEST: " + 
        ManagementFactory.getRuntimeMXBean().getInputArguments());
    

    测试: [-agentlib:jdwp=transport=dt_socket,地址=127.0.0.1:40770,挂起=y,服务器=n, -ea,-Didea.test.cyclic.buffer.size=1048576,-javaagent:/opt/idea-IC-181.4203.550/plugins/Groovy/lib/agent/gragent.jar, -javaagent:/opt/idea-IC-181.4203.550/lib/rt/debugger-agent.jar=文件:/tmp/capture.props, -[Dfile.encoding=UTF-8]

    以及以下非调试模式下的输出:

    测试:[-ea,-Didea.TEST.cyclic.buffer.size=1048576, -javaagent:/opt/idea-IC-181.4203.550/lib/idea\rt.jar=46442:/opt/idea-IC-181.4203.550/bin, -[Dfile.encoding=UTF-8]