메서드 중 하나가 공동 작업자 클래스의 인스턴스를 반환하는 클래스를 단위 테스트하려고합니다. 인수의 값에 따라 새로 생성 된 인스턴스 또는 저장된, 이전에 생성 된 인스턴스.jmockit 조롱 된 생성자가 예상 값을 반환하지 않습니다.
나는 Expectations에서 생성자 호출을 조롱하고 결과를 공동 작업자의 조롱 된 인스턴스 값으로 설정합니다. 그러나 새 인스턴스를 만드는 매개 변수 값을 사용하여 메서드를 테스트하면 조롱 된 생성자 및 메서드가 예상 값을 반환하지 않습니다.
나는 다음이를 단순화 :
package com.mfluent;
import junit.framework.TestCase;
import mockit.Expectations;
import mockit.Mocked;
import mockit.Tested;
import org.junit.Assert;
import org.junit.Test;
public class ConstructorTest extends TestCase {
static class Collaborator {
}
static class ClassUnderTest {
Collaborator getCollaborator() {
return new Collaborator();
}
}
@Tested
ClassUnderTest classUnderTest;
@Mocked
Collaborator collaborator;
@Test
public void test() {
new Expectations() {
{
new Collaborator();
result = ConstructorTest.this.collaborator;
}
};
Collaborator collaborator = this.classUnderTest.getCollaborator();
Assert.assertTrue("incorrect collaborator returned", collaborator == this.collaborator);
}
}
이 테스트에 실패하고 크게 감사 BR 것 작동하는 방법에 이유가 뭘까요. 사전에
감사합니다,
짐 Renkel는 수석 기술 직원 는 mFluent, 주식 LLC는
는
이 도와 주셔서 너무 감사 표시! 실제 테스트 케이스에 수정 사항을 적용했지만 여전히 작동하지 않았습니다. 그러나 더 많은 파기와 실험을 한 후에, 나는 그것을 작동시킬 수있었습니다. 문제는 여러 구성을 캡처해야했기 때문에 각 캡처 필드가 maxInstances = 1 특성을 갖도록해야했습니다. 분명하지 않지만 내가 말했던 것처럼 작동합니다. 다시 한 번 도움을 주셔서 감사합니다. 짐 렌켈 수석 기술 직원 mFluent, Inc. LLC –
위대한, 다행 당신을 위해 일했다. 그리고 StackOverflow에 오신 것을 환영합니다! –
대신'@Mocked Collaborator mock'을 사용하십시오. 그것은 현재와 미래의 모든 * 예를 모의 할 것입니다. 일반적으로 'Collaborator'객체에서 예상되는 동작을 지정해야합니다. 동일한 조롱 된 클래스의 다른 인스턴스와 다른 동작이 필요하지 않으면 인스턴스에 대해 걱정할 필요가 없습니다. –