0

これは奇妙なものです。アスペクトが適用されているためにいくつかのテストが失敗したため、自動配線されたサービスが null になり、悪いことが続いています。問題は、テストで new を使用してテスト対象のオブジェクトを構築するため、アスペクトがどのように適用されているのか理解できないことです。

@RunWith(MockitoJUnitRunner.class)
public class TheControllerTest {

    @Spy
    private TheController controller = new TheController();

    @Mock
    private HttpServletRequest request;

    @Mock
    private ConfigService configService;
  ....

@Before
public void setup() {
    controller.setConfigService(configService);
....
    }

@Test
public void testGetAccountsList() throws Exception {
Mockito.when(accountService.getAllAccounts()).thenReturn(Arrays.asList(account1,     account2));

    Map<String, Object> result = controller.getAccountsList(request);
...    
}
}

私は明らかに多くのコードを省略していますが、実際には、コントローラーがどのようにインスタンス化されているかを考えると、アドバイスを適用する方法がわかりません。

4

1 に答える 1

0

考えられる理由の 1 つは、これを Eclipse で実行している場合です。ajbuilder が有効になっているプロジェクトでは、動的プロキシを介して Spring AOP を明示的に期待している場合でも、ajbuilder は実際にコンパイル チーム ウィービングを実行するため、使用してもアドバイス拡張クラスが表示されます。通常の「新しい」。これを確認してください。修正は「ajbuilder」を無効にすることです-ここに1つの参照があります-間違ったSpring AOP Beanを織り込むJUnit

于 2012-06-22T19:57:08.923 に答える