测试时可以影响布尔值吗?

时间:2014-03-07 10:51:51

标签: java jdk1.5

编辑:完全重写了这个问题,因为原文不清楚。

在需要保留 someTestMethod 返回值以执行进一步测试的情况下执行以下操作是不好的做法?:

    boolean foo;
    if(someCondition || (foo=someTestMethod()) || someOtherConditions){
        //do stuff depending on foo value
    }

因为我正在测试一个布尔值并同时影响它,这就是让我想知道一切是否正确的原因。我正在以这种方式编写测试,因为 someTestMethod 花费了大量时间,如果第一次测试通过,我不希望它被调用。

我必须补充说我已经简化了很多,请不要回复关于如何重写测试的问题,我只想知道你是否可以安全地编写 if(foo = someTest()),导致测试变量并同时影响变量。

1 个答案:

答案 0 :(得分:0)

你所做的事情在技术上没有任何问题。它适用于任何Java编译器。

然而,以下是相同的,对我来说,更清楚。

 if(p1(x,y) {
     println("I only ran p1");
 } else if (p2(x,33)) {
     println("I only ran p2");
 } else if(p3(y,33)) {
     println("Ran all three");
 }

但是有一个隐含的部分不在你的例子中。大概你想用OR的结果做其他事情。最好有一个方法:

if(combinedConditions(x,y) {
     doSomething();
}

boolean combinedConditions(int x, int y) {
    if (p1(x,y)) {
        println("I only ran p1");
        return true;
    }
    if (p2(x,33)) {
        println("I ran p1 and p2");
        return true;
    }
    println("I ran all three");
    return p3(y,33);
}

更一般地说,“调试”printlns是坏消息。