테스트 커버리지를받는 방법을 설명해 주시겠습니까? 나는 모키토가 완전히 반 직관적이기 때문에 도움을 찾고있다. 모의 객체만을 사용한다면 어떻게 테스트 커버리지를 얻을 수 있습니까? 나는 이해하지 못한다.Android 용 Mockito로 테스트하기
내 테스트는 다음과 같습니다.
package dev.game.adventure;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.CoreMatchers.*;
import static org.mockito.Mockito.*;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.widget.TextView;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class AdventureTest {
private static final String FAKE_STRING = "HELLO WORLD";
@Mock
Simulation engine;
@Mock
AdventureWorld mWorld;
@Mock
Adventure mworld;
@Mock
Context aContext;
@Mock
FullscreenActivity mActivity;
@Mock
Drawable mDrawable;
@Mock
Resources mResources;
@Mock
Place mPlace;
@Mock
AdventureGame ag;
@Test
@Ignore
public void Tedye() {
//when(mWorld.defaultPlace()).thenReturn(mPlace);
// myObjectUnderTest.wakeMeAfter(new WalkingPerson(myObjectUnderTest, mWorld, "new", 2, mActivity), 10);
//String result2 = myObjectUnderTest.getHelloWorldString();
//assertThat(result2, is(FAKE_STRING));} createPlace("Heaven", target, R.mipmap.dungeon2);
// Adventure a = new Adventure(textview, mactivity, ag);
}
@Test
@Ignore
public void testd() {
// Textview scrollable = ''''''''''''(R.id.textView1);
when(mWorld.defaultPlace()).thenReturn(mPlace);
Context mCont;
}
@Test
@Ignore
public void adventureWorld() {
// Simulation myObjecUnderTest = new Simulation();
Adventure a = new Adventure(new TextView(aContext), mActivity, ag);
Player p = a.getPlayer();
p.say("foobar", mActivity);
p.say("Hello my name is " + a.getPlayer().getMe().name, mActivity);
}
//@Ignore
@Test
public void adventureTest() {
Simulation myObjectUnderTest = new Simulation();
when(mWorld.defaultPlace()).thenReturn(mPlace);
myObjectUnderTest.wakeMeAfter(new WalkingPerson(myObjectUnderTest, mWorld, "new", 2, mActivity), 10);
String result2 = myObjectUnderTest.getHelloWorldString();
assertThat(result2, is(FAKE_STRING));
}
//@Ignore
@Test
public void personTest() {
Simulation myObjectUnderTest = new Simulation();
when(mResources.getDrawable(R.mipmap.dungeon)).thenReturn(mDrawable);
when(mActivity.getResources()).thenReturn(mResources);
when(mActivity.getResources().getDrawable(R.mipmap.dungeon)).thenReturn(mDrawable);
when(mWorld.defaultPlace()).thenReturn(mPlace);
WalkingPerson myObjectUnderTest2 = new WalkingPerson(myObjectUnderTest, mWorld, "blaha", 2, mActivity);
String result2 = myObjectUnderTest2.getHelloWorldString();
myObjectUnderTest2.getThings();
myObjectUnderTest2.getWorld();
assertThat(result2, is(FAKE_STRING));
}
//@Ignore
@Test
public void trollTest() {
Simulation myObjectUnderTest = new Simulation();
AdventureWorld ag;
when(mResources.getDrawable(R.mipmap.dungeon)).thenReturn(mDrawable);
when(mActivity.getResources()).thenReturn(mResources);
when(mActivity.getResources().getDrawable(R.mipmap.dungeon)).thenReturn(mDrawable);
when(mWorld.defaultPlace()).thenReturn(mPlace);
WalkingPerson myObjectUnderTest2 = new Troll(myObjectUnderTest, mWorld, "Loki", mActivity);
String result2 = myObjectUnderTest2.getHelloWorldString();
myObjectUnderTest2.getThings();
AdventureWorld adv = (AdventureWorld) myObjectUnderTest2.getWorld();
//assertThat(adv.defaultPlace().toString().equals(mWorld.defaultPlace().toString()));
// assertThat(adv.defaultPlace(), is(FAKE_STRING));
assertThat(myObjectUnderTest2.getName(), is("Loki"));
//assertThat(adv.messsage, is(FAKE_STRING));
}
//@Ignore
@Test
public void cokeTest() {
when(mWorld.getPlace("Dungeon")).thenReturn(mPlace);
mWorld.getPlace("Dungeon").addThing(new CocaCola("Ljummen cola"));
Simulation myObjectUnderTest = new Simulation();
when(mResources.getDrawable(R.mipmap.dungeon)).thenReturn(mDrawable);
when(mActivity.getResources()).thenReturn(mResources);
when(mActivity.getResources().getDrawable(R.mipmap.dungeon)).thenReturn(mDrawable);
when(mWorld.defaultPlace()).thenReturn(mPlace);
WalkingPerson myObjectUnderTest2 = new Troll(myObjectUnderTest, mWorld, "blaha", mActivity);
String result2 = myObjectUnderTest2.getHelloWorldString();
myObjectUnderTest2.getThings();
myObjectUnderTest2.getWorld();
assertThat(result2, is(FAKE_STRING));
}
@Ignore
@Test
public void testPlace() {
Simulation myObjectUnderTest = new Simulation();
when(mResources.getDrawable(R.mipmap.dungeon)).thenReturn(mDrawable);
mWorld.createPlace("Heaven", mActivity, R.mipmap.dungeon2);
mWorld.createPlace("Hell", mActivity, R.mipmap.dungeon2);
mWorld.connect("Heaven", "Hell", "Down", "Up");
mWorld.randomPlace();
assertTrue(false);
}
@Ignore
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
// Context appContext = InstrumentationRegistry.getTargetContext();
// assertEquals("dev.game.adventure", appContext.getPackageName());
}
}
저장소는 available online입니다.
하나의 접근법은 테스트중인 실제 코드를 사용하여 쉽게 테스트 할 수없는 상황을 테스트하기 위해 모의 (mocks)를 선택적으로 사용하는 것입니다. 예를 들어,'Whatever' 클래스에'something()'메소드가있어'Swot' 객체를 포함하지 않는'Frobozz' 인스턴스를 반환 할 수 있습니다 만, 이것을 할 수있는'Whatever'을 쉽게 생성 할 수 없습니다 (윤년에만 비가 내리기 때문에). 그래서, 여러분은'something()'을 모의 (mock)로 만들어 테스트를 위해이 특정 결과를 리턴하고, 평소와 달리'Whatever'을 테스트합니다. – CommonsWare
나는 어리 석고 나는 이해하지 못한다. 모의 객체를 사용할 때 나는 0 % 코드 커버리지를 얻는다. –
* 조롱당한 물건이 0 % 적용됩니다. 특정 상태의 객체가 필요한 다른 코드 *를 테스트하기위한 모의 객체를 만들고 모의 객체는 그러한 객체를 얻는 가장 간단한 방법입니다. 또는 모의 객체를 만들어 해당 모의 객체에서 다른 코드 호출 메소드의 결과를 기록합니다. 모의의 목표는 * 다른 코드 *에 대한 테스트를 작성하고 다른 코드의 적용 범위를 향상시키는 데 도움을주는 것입니다. – CommonsWare