テストクラスでインスタンス化されたときに@Valueアノテーションがnullを返すサービスで、自動生成コンストラクタを使用しています。依存関係の自動配線は問題を直接解決しますが、プロジェクトはコンストラクターベースの自動配線を使用するという慣例に従います。私の理解では、テストクラスのサービスをインスタンス化することは、@ Valueがnullを返すSpring IoCコンテナからそれを作成していないことです。アプリケーションコンテキストに直接アクセスせずにコンストラクタベースのautowiringを使用してIoCコンテナからサービスを作成する方法はありますか? @Value
作業updateService
はSpringコンテキスト内でなければならないようにするにSpring @Autowiredコンストラクタは、テストクラスでインスタンス化されたとき@Valueがnullを返すようにします。
@RunWith(SpringJUnite4ClassRunner.class)
@SpringApplicationConfiguration(classes = {TestApplication.class})
@WebAppConfiguration
public class UpdateServiceTest {
private UpdateService updateService;
@Mock
private UserService mockUserService;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
updateService = new UpdateService(mockUserService);
}
}
もしあなたが 'UpdateService'ビーンを持っていれば' @ Autowired'だけです。 –
残念ながら、これはテストクラスのmockedオブジェクトでUpdateServiceを構築できる必要があるため、私には役に立ちません。 – Alex
そう、それを逃した。ヒントについてはこちら[こちら](http://stackoverflow.com/questions/2457239/injecting-mockito-mocks-into-a-spring-bean)をご覧ください。 –