我在JUnit测试类中使用Javautil日志(JUL),JUL在默认配置中工作(即打印到控制台)。
使用@BeforeClass
和@AfterClass
注释的方法中的日志语句在执行时将被打印,但“@Test”方法中的日志仅在所有测试执行完成后才被打印。
不确定到底是哪里出了问题,因为同样的方法在更早的时候就起作用了。
记录器实例化:
private static Logger logger = Logger.getLogger(MainIntegrationTest.class.getName());
记录器用途:
logger.info("start test");
测试用例使用maven运行。我注意到,只有在我开始使用这个surefire配置并行运行测试类后,这种情况才开始发生:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<parallel>classes</parallel>
<useUnlimitedThreads>true</useUnlimitedThreads>
</configuration>
</plugin>
如果我以串行方式运行测试类,那么日志将在测试执行时打印。
使用maven运行测试用例。我注意到,只有在我开始使用这个surefire配置并行运行测试类之后,这种情况才会发生
如果所有测试同时写入控制台,则输出将被置乱。对于并发执行,必须为整个运行缓冲结果,然后将结果作为一个块写入控制台。写入控制台的唯一安全时间是测试完成时。
即使缓存是逐行执行的,这也可能导致控制台中的交叉消息难以读取,甚至误导您,因为您不知道该行的来源。
我一直在设置一些合约JUnit 4测试(遵循回答这个问题的建议) - 例如,如果我有一个接口(我已经在示例中包含了泛型,因为我在我的项目中使用它们) - 但是,这是一个大大简化的示例: 我可以创建一个抽象的合同测试,例如: ...并为每个实现扩展此抽象测试类(我使用。我还将一些变量传递给抽象测试类,以测试接口的实现。 然而,实际上,一些接口返回的对象是其他接口的实现,我希望能够使用该接口的抽象契约
问题内容: 我有一组JUnit测试用例,并使用junit任务从ANT执行它们。在执行测试时,在控制台中,我只能看到当前正在运行哪个测试用例(即Java类),而不能看到测试方法。有什么方法可以打印当前正在执行的测试方法?还是除了拥有自己的JUnit测试运行器之外,还有其他方法可以做到这一点? 控制台输出样例 相反,我希望得到这样的输出 问题答案: 不幸的是,没有很好的方法挂接到JUnit。对于使用T
有没有更简单的方法来完成我想要的?如果这是最好的方法,那么我做错了什么?
我想在JUnit中创建用于测试运行的自定义html报告。我有一个问题是释放资源和关闭标记后,所有的测试都完成了。 我保留了一个打开的文件,以便编写报告。因为每个测试都应该是表和行,而且有数百个,所以我不想为每个测试打开和关闭通道。这里出现的问题是测试组织--我有嵌套的套件,所以testRunFinished不是一个选项(指单个套件,不是所有测试,我看到了这个问题)。TestWatcher也不会帮助
方法和测试位于一个类中,例如 下面是我的testng.xml的示例,其中包含了包含功能测试的包 UPD.post修改后的代码中包含AfterTest。我只使用before/aftermethod注释
我们正在使用REST保证来测试一些REST服务。我们需要将请求和响应日志重定向到Log4j日志。我们有以下代码来测试日志重定向: 我们将以下日志输出到log4j文件: 在system.out,我们看到请求和响应的REST保证输出。该输出没有重定向到Log4j文件。如何将控制台输出重定向到Log4j文件?