gpt4 book ai didi

java - 断言失败时触发函数

转载 作者:行者123 更新时间:2023-12-01 14:51:05 27 4
gpt4 key购买 nike

我正在使用 Java 中提供的 CodeModel 来生成复杂的代码。我已经设法以这样的方式设置我的单元测试,以便测试生成小但功能完整的 Java 代码,该代码在内存中编译,并从内存加载生成的类。如果我不输出生成的代码,一般来说一切都相当快。

由于生成器代码不知道生成的类,因此我使用反射来触发生成的类上的方法,效果很好。当我使用反射来通过检查对象的状态来确保方法完成预期的工作时,这些方法也可能会失败。

我的问题是我不想在每次运行测试时记录生成的代码。但我想在测试失败时查看生成的代码。有很多测试,由于我使用 infintest,我的 Eclipse 变得更慢,因为Infinist 不断累积各种测试的输出。

我可以设置 junit 以便在测试失败时调用我的函数吗?例如

boolean compileSuccessful = compile();
Assert.assertTrue("Ooops, you generated bad code", compileSuccessful);

如果上述断言失败,我想输出生成的代码并看看出了什么问题。

最佳答案

您可以使用 TestRule ,它将生成的代码添加到失败测试的输出中。我建议延长TestWatcher.

public class GeneratedCodeLogger extends TestWatcher {
private Logger log;

public GeneratedCodeLogger(Logger log) {
this.log = log;
}

@Override
protected void failed(Description d) {
System.out.println(log.toString());
}
}

您的测试必须使用此规则并将生成的代码记录到记录器。

关于java - 断言失败时触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com