2017-02-06 2 views
0

내 구체적인 문제는 인스턴스화중인 빈이 파일의 잘못된 위치를 찾고 있다는 것입니다. 내 애플 리케이션의 설정에서 그 값은 결코 정의되지 않으며 콩에 대한 기본값입니다.Spring을 실행하는 방법 앱으로 정확한 설정으로 통합 테스트

@RunWith(SpringRunner.class) 
@SpringBootTest 
@WebAppConfiguration 
public class SqsQueueDaoIT { 

    private static final Logger LOGGER = LoggerFactory.getLogger(SqsQueueDaoIT.class); 

    @Autowired 
    SqsQueueDao sqsQueueDao; 
    @Autowired 
    AmazonSQSAsync amazonSQSAsync; 

    final String TEST_QUEUE_NAME = "queueName"; 
    final String TEST_QUEUE_ENDPOINT = "sqs.us-east-1.amazonaws.com/123123123123123/"; 
    final String TEST_ACTION = "validate"; 
    final String TEST_BODY = "new body"; 

    @Test 
    public void helloTest() { 
     sqsQueueDao.send(TEST_QUEUE_NAME, TEST_ACTION, TEST_BODY); 
     String body = receiveMessageResult().getMessages().get(0).getBody(); 
     assertTrue(body.contains("action")); 
     assertTrue(body.contains("source_system_id")); 
     assertTrue(body.contains(TEST_ACTION)); 
     assertTrue(body.contains(TEST_BODY)); 
    } 

    private ReceiveMessageResult receiveMessageResult() { 
     ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(TEST_QUEUE_ENDPOINT + TEST_QUEUE_NAME); 
     receiveMessageRequest.putCustomQueryParameter("QueueName", TEST_QUEUE_NAME); 
     receiveMessageRequest.putCustomQueryParameter("QueueUrl", TEST_QUEUE_ENDPOINT); 
     return amazonSQSAsync.receiveMessage(receiveMessageRequest); 
    } 


} 

테스트를 실행에서 저를 방지 오류는 다음과 같습니다 : 여기

@Configuration 
public class AWSConfig { 

    private static final Logger LOGGER = LoggerFactory.getLogger(AWSConfig.class); 

    // base sqs endpoint url is injected from application.properties 
    @Bean(name="awsClient") 
    @Primary 
    public AmazonSQSAsyncClient amazonSQSClient() { 
     LOGGER.info("Instantiating AmazonSQSAsyncClient Bean"); 
     AmazonSQSAsyncClient awsSQSAsyncClient 
       = new AmazonSQSAsyncClient(); 
     return awsSQSAsyncClient; 
    } 
} 

테스트 클래스의 :

여기 내 응용 프로그램의 설정입니다

Failed to instantiate [com.amazonaws.auth.profile.ProfilesConfigFile]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: AWS credential profiles file not found in the given path: /Users/user.name/Code/fullfillment/default 

의 기본 콩은 다른 위치이며, 어디 있는지 보도록 설정 한 곳이 없습니다.

  1. AWS에 대한 구체적인 지식이있는 경우 뭔가 일반적인 일이 있습니까?
  2. 테스트를 실행하기 위해 spring-boot : run이 수행하는 것과 정확히 똑같은 방식으로 애플리케이션을 복제하는 방법은 무엇입니까?

답변

0

나는 이유를 이해하지만, 명시 적으로 새로운 ProfileCredentialsProvider를 초기화하고 AmazonSQSAsyncClient 테스트의 구성 작업을했다으로 주입하지 않습니다.

public AmazonSQSAsyncClient amazonSQSClient() { 
    ProfileCredentialsProvider profileCredentialsProvider = new ProfileCredentialsProvider(); 
      AmazonSQSAsyncClient awsSQSAsyncClient 
        = new AmazonSQSAsyncClient(profileCredentialsProvider); 
      return awsSQSAsyncClient; 
}