这个问题在这里已经有答案了:
如何在java中获取当前堆栈跟踪(21个答案)
10天前关门了。
为了练习算法问题,我将java代码设置为:problemclass.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基本上是 Package 一个比较,如:
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]
...
我不知道哪个测试用例失败了。我想知道什么测试失败了。我愿意接受其他建议。到目前为止,我想也许有一种方法可以显示传入的参数 function
打电话的时候 isEqual
通过一些像反射的东西。我找不到一个明确的答案。
最后,我想把所有东西都放在main()中,这样我的所有测试和代码都放在一个地方,而不是有一个我必须管理的单元测试类。
1条答案
按热度按时间w8ntj3qf1#
不能访问调用者传递给另一个函数的参数:方法参数仅在方法仍在执行时存储;一旦一个方法完成了执行,保存它的参数的存储就会被回收并重新用于其他目的(比如下一个要执行的函数的参数/局部变量)。
因此,必须更改代码的结构,以便以某种方式将此值传递给需要它的函数。一种简单的方法是添加一个附加参数:
把它叫做:
这是可行的,但需要将输入传递两次。避免这种情况的一种方法是传递解决方案,而不是直接调用其方法:
哪里
然而,这仍然需要
check
要知道调用哪个方法(function
是我们的例子)。如果你需要的话check
要使用任意方法,可以传递方法本身,而不仅仅是传递定义方法的对象:哪里
尽管如此,在专业代码中,您可能会使用junit之类的测试框架,而不是重新发明轮子。