Одинаковое значение, возвращаемое объектом 2 с такими же Mocked Interfaces, используя JMockit - PullRequest
2 голосов
/ 09 января 2012

Я сделал простой тестовый класс, чтобы упростить мою актуальную задачу:

открытый класс BidonTest {

@Mocked
IBidon ibidon;

@Mocked
IBidon ibidon2;

@Mocked
Bidon bidon;

@Mocked
Bidon bidon2;

@Test
public void testBidon(){
    new NonStrictExpectations(2, Bidon.class){
        {
            ibidon.doIt(); result = "i: coco";
            ibidon2.doIt(); result = "i: ismael et jordan";
            bidon.doIt(); result = "c: coco";
            bidon2.doIt(); result = "c: ismael et jordan";
        }
    };
    System.out.println(ibidon.doIt());
    System.out.println(ibidon2.doIt());
    System.out.println(bidon.doIt());
    System.out.println(bidon2.doIt());
}


public interface IBidon{
    public String doIt();
}

public class Bidon implements IBidon{
    @Override
    public String doIt(){
        return "toto";
    }
}

}

Ниже результат теста:

i: coco
i: coco
c: coco
c: ismael et jordan

Мой первый вопрос: почему ibidon2 возвращает «кокос»?(даже если у меня мало идей, но, может быть, кто-то здесь является экспертом по JMockit: D) ​​Мой второй вопрос: как я могу изменить его, чтобы он возвращал «ismael et jordan»?

1 Ответ

0 голосов
/ 10 января 2012

У меня нормально работает после исправления вашего источника.

package main;

import mockit.Mocked;
import mockit.NonStrictExpectations;
import org.junit.Test;

public class TestBidon {
    @Mocked IBidon ibidon;
    @Mocked IBidon ibidon2;
    @Mocked Bidon bidon;
    @Mocked Bidon bidon2;

    @Test public void testBidon() {
        new NonStrictExpectations() {{
            ibidon.doIt();  result = "i: coco";
            ibidon2.doIt(); result = "i: ismael et jordan";
            bidon.doIt();   result = "c: coco";
            bidon2.doIt();  result = "c: ismael et jordan";
        }};

        System.out.println(ibidon.doIt());
        System.out.println(ibidon2.doIt());
        System.out.println(bidon.doIt());
        System.out.println(bidon2.doIt());
    }
}

Производит:

i: coco
i: ismael et jordan
c: coco
c: ismael et jordan

Какую версию вы используете?Выше было через 0.999.12.

(Также не уверен, почему вы используете счетчик вызовов здесь, так как он зависит от NonStrictInvocation, чтобы избежать утверждения.)

...