在Java中,如何设计一种方法来系统地测试不同的条件组合?

在Java中,如何设计一种方法来系统地测试不同的条件组合?,java,combinations,Java,Combinations,如果我有一个应用程序具有以下方法,那么想出另一种方法系统地测试不同条件组合的最佳方法是什么 所以如果我有这样的东西: boolean A(){return(x-y/z>n-m/p);}//仅举一个例子 布尔B(){进行一些计算并返回true或false} 布尔C(){进行一些计算并返回true或false} 我不知道以下哪项结果对我最有利,所以我需要测试所有这些结果: A() && B() && C() A() || B() || C() A() &&am

如果我有一个应用程序具有以下方法,那么想出另一种方法系统地测试不同条件组合的最佳方法是什么

所以如果我有这样的东西:

boolean A(){return(x-y/z>n-m/p);}//仅举一个例子

布尔B(){进行一些计算并返回true或false}

布尔C(){进行一些计算并返回true或false}

我不知道以下哪项结果对我最有利,所以我需要测试所有这些结果:

A() && B() && C()
A() || B() || C()
A() && B() || C()
!A() && B() && C()
A() || !B() || C()
A() && B() || !C()
A() || B() && C()
A() && ( B() || C() )
A() || ( B() && C() )
...
如何提出如下方法:

boolean Z(int Combo_Id,boolean A,boolean B,boolean C)
{
  switch (Combo_Id)
  {
    case 1 : return A && B && C;
    case 2 : return A || B || C;
       ...
  }
} 
如你所见,我必须一个接一个地做,如果我有10,20个方法,比如A(),B(),F(),L()。。。如何设计一种自动测试不同条件组合的方法


当然,我省略了更多细节,像A()这样的每个方法都可以接受一些参数,就像A(int P1,float P2),等等,每一个组合都会让我找到另一个参数的不同值,我试图找到它的最佳值,但那是另外一回事,主要问题是如何自动生成系统组合。

对您最有利的组合不是执行您想要的计算的组合吗?您如何定义“对您最有利”?列出的每个表达式将产生true或false。你的意思是如何找到其中一个表达式,从而得到true?你错过了exclusive OR和NOT条件。我想你可以编写一个Java程序来输出你的Z方法。这听起来是一个非常有趣的问题。提示:它都是面向对象的;由于Java(7)不允许您将函数作为第一类对象传递,您应该将它们抽象出来,并按顺序对它们执行某种操作!A、 然后你有&&或| |,然后是B或!B、 然后&&或| |,然后是C或!你有5个位置,每个位置都有一个二元决策。如果位表示为选项,则从0到2^5的迭代应给出所有组合。然后您可以有如下内容:
if(bit0==0)a=a();否则a=!a();如果(位3==0)b=b();否则b=!b();如果(比特2==0)ab=a&&b;else ab=a | | b等等。