Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何记录JUnit测试方法的每条语句_Java_Junit - Fatal编程技术网

Java 如何记录JUnit测试方法的每条语句

Java 如何记录JUnit测试方法的每条语句,java,junit,Java,Junit,默认情况下,jUnit报告只记录测试用例级别的日志:“通过”或“失败”,否则加上stacktrace 我需要的是更深入地记录JUnit@Test方法中的每一行代码。因此,报告有一个一般信息(测试通过或失败)和一个详细信息,其中包括执行的每个步骤以及最终失败的步骤 以下为当前代码结构: public abstract class TestClass{ static Logger logger = log4j.Logger.getLogger(TestClass.class);

默认情况下,jUnit报告只记录测试用例级别的日志:“通过”或“失败”,否则加上stacktrace

我需要的是更深入地记录JUnit@Test方法中的每一行代码。因此,报告有一个一般信息(测试通过或失败)和一个详细信息,其中包括执行的每个步骤以及最终失败的步骤

以下为当前代码结构:

public abstract class TestClass{
    static Logger logger = log4j.Logger.getLogger(TestClass.class); 

    @Test
    public void testMethod() throws Exception{
            driver.findElement(By.id("some_id")).click();
            Assert.assertEquals("product edit", driver.getTitle());
    }
}

这是不可能的,因为编译后源代码不再可见。

您只能在测试方法的每一行之前/之后使用日志指令手动执行此操作,例如:

public abstract class TestClass{
    static Logger logger = log4j.Logger.getLogger(TestClass.class); 

    @Test
    public void testMethod() throws Exception{
            logger.info("Calling click method on some id...");
            driver.findElement(By.id("some_id")).click();
            logger.info("Testing driver's title");
            Assert.assertEquals("product edit", driver.getTitle());
    }
}

您已经知道哪个失败了,因为它在标准JUnit输出中。你也知道以前发生了什么,因为它在你的测试代码中。如果测试用例如此复杂,以至于您觉得需要逐行日志记录,那么您应该考虑重构测试。