2013-11-07 2 views
0

У меня есть некоторые анонимные классы Action в модульном тестовом коде. У анонимных классов нет имени. Class#getSimpleName возвращение "". Он вызывает IndexOutOfBoundException при инициализации условного плагина. PackageBasedActionConfigBuilder#buildConfiguration пропускает все интерфейсы, перечисления, аннотации и абстрактные классы. Он также должен пропустить анонимные классы. Добавьте actionClass.isAnonymous() в состояние пропуска. У меня есть некоторые анонимные классы Action в моем модульном тестовом коде. Это не хороший дизайн.Анонимные классы классов вызывает IndexOutOfBoundException

private PageAction action; 

@Before 
public void beforeEach() { 
    action = new PageAction() {}; 
} 
@Test 
public void shouldAcceptAndPublicPageId() { 
    action.setPageId(1); 
    assertEquals(1, action.getRequestedPageId()); 
} 
... 
// To bypass complex logic in ViewPageAction 
@Before 
public void beforeEach() { 
    action = new ViewPageAction() { 
     boolean isPageBookmarkedByUser(Page page, User user) { return true; } 
     VisitPage visitPage() { return null; } 
    }; 
    coreService = mockery.mock(CoreService.class); 
    action.setCoreService(coreService); 
    uiService = mockery.mock(UiService.class); 
    action.setUiService(uiService); 
    pageRepository = mockery.mock(PageRepository.class); 
    action.setPageRepository(pageRepository); 
    pageAttachmentRepository = mockery.mock(PageAttachmentRepository.class); 
    action.setPageAttachmentRepository(pageAttachmentRepository); 
    wiki = WikiTest.publicWiki(); 
    action.setWiki(wiki); 
    User user = UserTest.FOO; 
    action.setUser(user); 
} 
@Test 
public void success() { 
    final Page page = PageTest.FOO_PAGE; 
    final String text = "Content of the page"; 
    final PageRevision latestRevision = MockPageRevision.FOO_REV2; 
} 

Спасибо за любую помощь

ответ

0

К сожалению, это не очень ясный вопрос, так что это предположение:

Вы пробовали сделать свой анонимный ViewPageAction в надлежащий класс?

// somewhere in your test class... 
private static class DummyViewPageAction extends ViewPageAction { 
    boolean isPageBookmarkedByUser(Page page, User user) { return true; } 
    VisitPage visitPage() { return null; } 
} 

// start of your @Before method... 
@Before 
public void beforeEach() { 
    action = new DummyViewPageAction(); 
    ... 
+0

@pobelkey ​​Я стараюсь, но это не работает :( –