使用JUnit测试一次检查if-else语句

时间:2017-05-22 13:56:45

标签: java arraylist junit

我尝试测试如何从我的文件中获取索引0和5的值。我可以得到价值。但是,要使用JUnit测试该值,我只能测试if(index == 0)但是它没有检查(index == 5)。

那么,如何使用if else一次测试两个索引?

@Test
public void test(){
    for(index = 0; index<arrayList.size(); index++){
        if(index==0 && index==5){
            given()
                .header(something)
                .get(something)
                .then(something)
                .body("try", contains(arrayList.get(index).getSomething(),arrayList.get(index).getSomething()))
                .log().all()
                .statusCode(HttpStatus.SC_OK)
        }
    }
}

2 个答案:

答案 0 :(得分:2)

在单元测试中,每个测试方法都会验证单个期望有关测试单元行为的信息。 因此,您针对不同的输入和/或不同的期望编写了不同的测试。

测试也不应该有(自写)逻辑。

如果您需要迭代输入值,可以考虑参数化测试:http://blog.schauderhaft.de/2012/12/16/writing-parameterized-tests-with-junit-rules/

答案 1 :(得分:1)

简单:

 for(index = 0; index<arrayList.size(); index++){
    if(index==0 && index==5){

这表示:如果index为0 index为5.

int不能同时具有两个值。你可能想要:

if(index==0 || index==5){

但当然:提摩太是正确的,你想要一个&#34;检查&#34;每次测试。

正确的解决方案是:编写一个带有参数indexToCheckFor的私有帮助器方法,以便您可以执行

private void testForIndex(int indexToCheckFor) {
....
  if(index == indexToCheckFor) {

然后有两个@Test方法,一个调用testForIndex(0),另一个调用5。