UT 및 PowerMock
테스트하는 방법은 많은 외부 의존 대상 (getConnection, getadmin 연결) 을 인용합니다. 외부 대상은 제어할 수 없습니다. 시뮬레이션 (mock) 외부 대상은 제어할 수 있습니다.
핵심 사상
네가 mock을 원하는 방법은 반드시 네가 mock의 대상조여야 한다.원래의 대상은 원래의 논리로만 갈 뿐이다.
주석이 필요한 경우:
@RunWith(PowerMockRunner.class)
@PrepareForTest ( { YourClassWithEgStaticMethod.class })
PowerMockito.mockStatic(ClassDependency.class);
PowerMockito.when(ClassDependency.isExist()).thenReturn(true);
PowerMockito.when(other.pub(Mockito.anyString())).thenCallRealMethod();
PowerMockito.when(other, "pri", Mockito.anyString()).thenReturn(" $$ I am handsome %% private.");
PowerMockito.doNothing().when(mockUnder.dovoid(Mockito.anyString())); //WRONG
PowerMockito.doNothing().when(mockUnder).dovoid(Mockito.anyString()); //RIGHT
PowerMockito.doNothing().when(mockUnder,"dovoid","aa","bb"); //RIGHT
PowerMockito.when(mockUnder,"dovoid","aa","bb").thenAnswer(answer); //RIGHT
사용 범위가 넓기 때문에 아래의 작법을 추천합니다
PowerMockito.doNothing().when(mockUnder,"dovoid","aa","bb");
PowerMockito.doNothing().when(UnderTest.class,"dovoid","aa","bb");
PowerMockito.when(mockUnder,"dovoid","aa","bb").thenAnswer(answer);
PowerMockito.when(under1, "isDpa", Mockito.anyString()).thenReturn(true);
Object[] args = invocation.getArguments();
는 들어오는 파라미터를 경계를 넘지 않도록 주의하세요PowerMockito.when(under1.isDpa(Mockito.anyString())).thenReturn(true).thenReturn(false);
PowerMockito.doThrow(new NullPointerException()).when(other).doExcep(Mockito.anyString());
던지는 이상은 반드시 Mock 방법으로 던질 수 있어야 한다. 그렇지 않으면 Mock 던지기 이상이 있을 수 있으므로 테스트 용례의 큰 catch에 Assert를 쓰지 마라.assertTrue(true);프로그램의 버퍼링 이상을 판단합니다. 왜냐하면 이 이상은 모크가 던질 가능성이 높기 때문입니다. @Test
public void test()
{
try
{
// do some test
}
catch (Exception e)
{
e.printStackTrace();
Assert.assertTrue(false);
}
}
UnderTest under = new UnderTest();
StudentMgr stuMgr = PowerMockito.mock(StudentMgr.class);
Class clazz = AbstractClass.class;
Field field = clazz.getDeclaredField("studentMgr");
field.setAccessible(true);
field.set(under, stuMgr);
FAQ
spy() is used when you want the real code of the class you are spying on to do its job, but be able to intercept method calls and return values. mock() is used to make a new class that has the same interface as the class you are mocking, but with NO code inside...
주의 사항
@BeforeClass // class
public static void setUpBeforeClass() throws Exception
{
}
@AfterClass // class
public static void tearDownAfterClass() throws Exception
{
}
@Before // Test
public void setUp() throws Exception
{
}
@After // Test
public void tearDown() throws Exception
{
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.