我正在努力将我自己的小测试方法跑步者脚本放在一起。
我需要一些方法来调用类中的所有方法。当我调用 Scanner in = new Scanner(System.in);
int max=0;
int a = in.nextInt();
for(int i=1;i<a;i++){
for(int j=i+1;j<=a;j++)
{
int d = i^j;
if(d>max)
max=d;
}
}
System.out.println(max);
方法时,我的程序陷入无限循环。造成这种情况的原因是什么以及解决方案是什么?
run_tests
答案 0 :(得分:0)
As mentioned by Wand Maker,run_tests
涉及递归。您的代码正在以下列方式执行:
SomeClass.instance_methods.each {}
run_tests
后,再次开始迭代。我不确定您是如何设计测试的,所以这里有一些解决问题的方法
如果所有测试对象都有类FadTest
,您可以在迭代中编辑逻辑,我首选的解决方案是what the Tin Man suggested
klass.instance_methods(false).each do |method|
next if method == :run_tests
# ...
end
唯一的问题是您仍在扫描:run_tests
元素。如果您想要保持完整的证明且数组中没有:run_tests
,您可以尝试what Cary Swoveland suggested:
(klass.instance_methods(false) - [:run_tests]).each {}
如果测试对象的类不是 FadTest
,那么我建议重写该方法。
def self.run_tests(object)
klass = object.class
klass.instance_methods(false).each {}
end
FadTest.run_tests(some_object)