@DataMongoTest由于UnsatisfiedDependencyException而失败

时间:2019-03-21 10:02:45

标签: java spring spring-security-oauth2 spring-test spring-mongo

我想测试我的存储库方法。但是,当我运行测试时,由于UnsatisfiedDependencyException而导致测试失败。由于某种原因,它试图创建AuthorizationServerConfig(如果我从此bean中删除@Configuration注释,则尝试创建其他bean)。失败会导致更深的依赖关系链,它需要RabbitMQ连接池,而我不希望在存储库测试中提供它。

问题是为什么Spring尝试创建所有未链接到存储库逻辑的bean?

我尝试排除所有带有@DataMongoTest(exludeFilters: ...)@DataMongoTest(exludeAutoConfiguration: ...)的bean,但没有效果。

唯一有用的是将@Profile(“!test”)添加到应用程序中的所有bean(所有!控制器,服务,组件),但是它闻起来像一个非常丑陋的解决方案。

存储库类非常简单:

    @Repository
    public interface ParticipantRepository extends MongoRepository<Participant, String> {
        List<Participant> findAllByLoggedInTrueAndAccessTokenExpirationAfter(Date expirationAfter);
    }

我的考试班:

    @DataMongoTest()
    @RunWith(SpringRunner.class)
    public class ParticipantRepositoryTest {

        @Autowired
        private MongoTemplate mongoTemplate;
        @Autowired
        private ParticipantRepository repository;

        private List<Participant> participants;

        @Before
        public void setUp() throws Exception {
            participants = createParticipants();
            repository.saveAll(participants);
        }

        @After
        public void tearDown() throws Exception {
            repository.deleteAll();
        }

        @Test
        public void findAllByLoggedInTrueAndExpirationAfter_shouldNotReturnLoggedOutParticipants() {
            List<Participant> result = repository.findAllByLoggedInTrueAndAccessTokenExpirationAfter(new Date());

            getLoggedOutParticipants().forEach(participant -> assertThat(participant, not(isIn(result))));
        }
    ...
    }

0 个答案:

没有答案