2017-07-13 32 views
2

私は、うまく動作するスプリングブート2.0.0 M2アプリケーションを持っています。テスト中に満足できない依存関係

私は基本的なテスト

@RunWith(SpringJUnit4ClassRunner.class) 
public class AddressServiceTest { 

    @Autowired 
    private AddressService service; 

    @MockBean 
    private AddressRepository restTemplate; 

    @Test 
    public void getAddress(){ 

     MockitoAnnotations.initMocks(this); 

     Pageable page = PageRequest.of(0, 20); 

     Page<Address> pageAdr = mock(Page.class); 

     given(this.restTemplate.findAll(page)).willReturn(pageAdr); 

     Page<AddressDto> pageDto = service.getAddress(page); 

    } 
} 

を実行しようとすると、私はこのエラーに

org.springframework.beans.factory.UnsatisfiedDependencyExceptionを取得し、コンストラクタ

@RequestMapping(value = "/rest") 
@RestController 
public class AddressRestController extends BaseController{ 

    private final AddressService AddressService; 

    @Autowired 
    public AddressRestController(final AddressService AddressService) { 
     this.AddressService = AddressService; 
    } 
    ... 
} 

@Service 
public class AddressServiceImpl extends BaseService implements AddressService { 

    @Autowired 
    public AddressServiceImpl(final AddressRepository AddressRepository) { 
     this.AddressRepository = AddressRepository; 
    } 

    private final AddressRepository AddressRepository; 
    ... 
} 


public interface AddressRepository extends JpaRepository<Address, Integer>, AddressRepositoryCustom { 

} 

@Repository 
public class AddressRepositoryImpl extends SimpleJpaRepository implements AddressRepositoryCustom { 
    @PersistenceContext 
    private EntityManager em; 

    @Autowired 
    public AddressRepositoryImpl(EntityManager em) { 
     super(Address.class, em); 
    } 
    ... 
} 

にautowired使用

: 名前がbeanの作成中にエラーが発生しました 'com.sonos.arcor.service.Addre ssServiceTest ':フィールド' service 'を介して表現された の不満足な依存性。 autowire 候補としての資格が期待少なくとも1豆「com.sonos.arcor.service.AddressService」 利用可能な」タイプの無 予選ビーン:ネストされた例外は org.springframework.beans.factory.NoSuchBeanDefinitionExceptionあります。依存関係の注釈: {@ org.springframework.beans.factory.annotation.Autowired(必要=真)}

私はこのエラーを取得する理由を私は理解していません。あなたはとても春SpringBootTestとテストに注釈を付ける必要がある

答えて

4

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications

@SpringBootTest 
@RunWith(SpringJUnit4ClassRunner.class) 
public class AddressServiceTest { 
// the remaining test 
} 

アプリケーション・コンテキストを初期化する。また、あなたはMockitoAnnotations.initMocks(this);

春を必要としないモック取り扱い

の世話をします

[@MockBeフィールドが使用されている場合、作成されたモックのインスタンスも になります。モック豆は自動的

が見る各テストメソッドの後にリセットされMocking and spying beans

関連する問題