【发布时间】:2021-04-06 13:37:39
【问题描述】:
为了练习算法问题,我将我的 Java 代码设置为: 问题类.java
public static void main(String[] args) {
Solution solution = new ProblemClass().new Solution();
Utils.isEqual(solution.function("abc"), "def");
}
public class {
public Solution {
public String function(String s) {}
}
}
Utils.isEqual 基本上包装了一个比较,例如:
public static void isEqual(Object actual, Object expected) {
if (actual == null && expected == null || actual.equals(expected)) {
System.out.println("Pass.");
} else {
System.out.println("Fail. Expecting: [" + expected + "] Actual result: [" + actual + "]");
}
}
当我运行数百个测试用例时,我在命令提示符上看到的只是:
Pass.
Pass.
Pass.
Pass.
...
Fail. Expecting: [false] Actual result: [true]
...
我不知道哪个测试用例失败了。我想知道 what 测试失败了。我愿意接受其他建议。到目前为止,我认为也许有一种方法可以在通过反射之类的方法调用isEqual 时显示传递给function 的参数。我找不到明确的答案。
最后,我想把所有东西都保存在 main() 中,这样我的所有测试和代码都在一个地方,而不是有一个我必须管理的单元测试类。
【问题讨论】:
-
您可以在断言中包含“消息”。但是使用 JUnit 或 TestNG 之类的测试框架不是更容易吗?
-
这个问题与“如何在 Java 中获取当前堆栈跟踪?”有何相似之处? ???
-
我没有投票关闭,但我猜是因为如果您在断言中转储堆栈跟踪,那么您可以准确地跟踪哪个测试失败。但如果可以的话,我仍然建议使用测试框架。
标签: java