싱글 톤 인스턴스를 사용하여 클래스를 모의하는 방법

쿠 무다

싱글 톤 인 Dao 클래스를 사용하고 있습니다. 서비스 클래스에서이 dao 클래스 인스턴스를 사용하고 있습니다. 서비스 클래스를 단위 테스트하고 싶습니다. 그래서 dao 클래스를 모의해야합니다. EasyMock으로 시도했습니다.

@RunWith(PowerMockRunner.class)

@PrepareForTest (MusicPlayerDaoImpl.class) public class MusicPlayerServiceTest {

private MusicPlayerDaoImpl dao;
private MusicPlayerServiceImpl service;

@Before
public void setUp() throws SQLException{
    this.service = MusicPlayerServiceImpl.getInstance();
    suppressConstructor(MusicPlayerDaoImpl.class);
    mockStatic(MusicPlayerDaoImpl.class);
    this.dao = createMock(MusicPlayerDaoImpl.class);
    this.service.setInstance(this.dao);
    Song song = new Song();
    Album album = new Album();
    Genre genre = new Genre();
    album.setAlbumName("some album);
    genre.setGenreName("some genre);
    song.setTitle("title");
    song.setRating(4);
    song.setAlbum(album);
    song.setGenre(genre);
    EasyMock.expect(this.dao.getSong("Bahara")).andReturn(song);
    EasyMock.replay(this.dao);
}


@Test
public void getSongTest() throws SQLException, IllegalStateException, SecurityException, SystemException {



    String title = "title"; 

Song returnSong = this.service.getSong(title);
assertTrue(returnSong.getTitle() == title);     

}

}

"java.lang.AssertionError : Unexpected method call"오류가 발생합니다.

     java.lang.AssertionError: 
  Unexpected method call MusicPlayerDaoImpl.getSong("title"):
    MusicPlayerDaoImpl.getSong("title"): expected: 1, actual: 2
    at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44)
    at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94)
    at org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:97)
    at service.MusicPlayerDaoImpl$$EnhancerByCGLIB$$e2ddeccf.getSong(<generated>)
    at service.MusicPlayerServiceImpl.getSong(MusicPlayerServiceImpl.java:99)
    at MusicPlayerServiceTest.getSongTest(MusicPlayerServiceTest.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:310)
    at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:88)
    at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86)
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45)
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:118)
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:104)
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
    at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
애슐리 프리즈

해당 함수가 1이 아닌 두 번 호출되는 이유는 서비스가 실제로 작동하는 방식에 따라 다릅니다. 서비스가 dao 메서드를 두 번 이상 호출 할 수 있습니다.

또한 사용중인 참고

assertTrue(expected == actual)

당신이 사용해야 할 곳

assertEquals(expected, actual)

또는 더 나은

assertThat(actual, is(expected))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

싱글 톤 클래스의 인스턴스를 저장하는 방법

분류에서Dev

리플렉션을 사용하여 싱글 톤 클래스에서 인스턴스를 얻는 방법

분류에서Dev

Gulp 및 Babelify (Babel + Browserify)를 사용하여 싱글 톤 및 클래스를 컴파일하는 방법

분류에서Dev

싱글 톤 클래스를 사용하여 종속성 주입으로 이동하는 방법

분류에서Dev

두 개의 인스턴스를 반환하는 싱글 톤

분류에서Dev

싱글 톤 클래스 내에서 변수를 공유하는 방법

분류에서Dev

ant taskdef 액션을 실행하는 동안 싱글 톤 클래스의 인스턴스 하나를 갖는 방법

분류에서Dev

PHP 아버지 클래스에서 싱글 톤 및 정적 늦은 바인딩 toghter를 사용하는 방법

분류에서Dev

서브 클래스에서 싱글 톤 패턴을 구현하는 방법

분류에서Dev

싱글 톤 클래스는 동기화 및 여러 인스턴스를 반환하지 않습니다

분류에서Dev

싱글 톤 클래스에서 다른 사용자간에 변수 공유를 피하는 방법

분류에서Dev

싱글 톤 클래스, Simple Injector에서 과도 로거를 사용하는 방법

분류에서Dev

특정 수의 객체를 처리하기 위해 싱글 톤 클래스를 확장하는 방법

분류에서Dev

Resque 워커에서 올바른 Rails 싱글 톤 인스턴스를 검색하는 방법

분류에서Dev

스프링이 싱글 톤 객체를 유지하는 방법

분류에서Dev

Swift의 싱글 톤 클래스에서 특정 TableViewController의 tableview를 다시로드하는 방법

분류에서Dev

MKMapView의 싱글 톤 클래스를 Storyboard에서 맵으로 설정하는 방법은 무엇입니까?

분류에서Dev

Javascript 싱글 톤 : 개인 변수에 액세스하는 방법?

분류에서Dev

RealmObject를 싱글 톤으로 확장하는 클래스

분류에서Dev

싱글 톤의 다른 인스턴스를 생성하는 Scala Script Engine

분류에서Dev

간단한 ostream 싱글 톤 클래스를 구현하려고

분류에서Dev

세 클래스에서 사용되는 싱글 톤 패턴

분류에서Dev

파이썬에서 싱글 톤으로 Base 클래스를 상속하는 방법

분류에서Dev

Play 2.5 Scala의 모듈에서 사용하는 싱글 톤 클래스의 변수에 액세스하는 방법

분류에서Dev

싱글 톤을 사용하지 않고 클래스를 하나의 인스턴스로 제한 하시겠습니까?

분류에서Dev

지연된 인스턴스화와 싱글 톤으로 바인딩을 등록하는 방법

분류에서Dev

C # 싱글 톤 클래스가 잘 작동하는지 확인

분류에서Dev

NestJS로 싱글 톤으로 작동하는 서비스를 만드는 방법

분류에서Dev

싱글 톤 클래스 사용

Related 관련 기사

  1. 1

    싱글 톤 클래스의 인스턴스를 저장하는 방법

  2. 2

    리플렉션을 사용하여 싱글 톤 클래스에서 인스턴스를 얻는 방법

  3. 3

    Gulp 및 Babelify (Babel + Browserify)를 사용하여 싱글 톤 및 클래스를 컴파일하는 방법

  4. 4

    싱글 톤 클래스를 사용하여 종속성 주입으로 이동하는 방법

  5. 5

    두 개의 인스턴스를 반환하는 싱글 톤

  6. 6

    싱글 톤 클래스 내에서 변수를 공유하는 방법

  7. 7

    ant taskdef 액션을 실행하는 동안 싱글 톤 클래스의 인스턴스 하나를 갖는 방법

  8. 8

    PHP 아버지 클래스에서 싱글 톤 및 정적 늦은 바인딩 toghter를 사용하는 방법

  9. 9

    서브 클래스에서 싱글 톤 패턴을 구현하는 방법

  10. 10

    싱글 톤 클래스는 동기화 및 여러 인스턴스를 반환하지 않습니다

  11. 11

    싱글 톤 클래스에서 다른 사용자간에 변수 공유를 피하는 방법

  12. 12

    싱글 톤 클래스, Simple Injector에서 과도 로거를 사용하는 방법

  13. 13

    특정 수의 객체를 처리하기 위해 싱글 톤 클래스를 확장하는 방법

  14. 14

    Resque 워커에서 올바른 Rails 싱글 톤 인스턴스를 검색하는 방법

  15. 15

    스프링이 싱글 톤 객체를 유지하는 방법

  16. 16

    Swift의 싱글 톤 클래스에서 특정 TableViewController의 tableview를 다시로드하는 방법

  17. 17

    MKMapView의 싱글 톤 클래스를 Storyboard에서 맵으로 설정하는 방법은 무엇입니까?

  18. 18

    Javascript 싱글 톤 : 개인 변수에 액세스하는 방법?

  19. 19

    RealmObject를 싱글 톤으로 확장하는 클래스

  20. 20

    싱글 톤의 다른 인스턴스를 생성하는 Scala Script Engine

  21. 21

    간단한 ostream 싱글 톤 클래스를 구현하려고

  22. 22

    세 클래스에서 사용되는 싱글 톤 패턴

  23. 23

    파이썬에서 싱글 톤으로 Base 클래스를 상속하는 방법

  24. 24

    Play 2.5 Scala의 모듈에서 사용하는 싱글 톤 클래스의 변수에 액세스하는 방법

  25. 25

    싱글 톤을 사용하지 않고 클래스를 하나의 인스턴스로 제한 하시겠습니까?

  26. 26

    지연된 인스턴스화와 싱글 톤으로 바인딩을 등록하는 방법

  27. 27

    C # 싱글 톤 클래스가 잘 작동하는지 확인

  28. 28

    NestJS로 싱글 톤으로 작동하는 서비스를 만드는 방법

  29. 29

    싱글 톤 클래스 사용

뜨겁다태그

보관