尝试 运行 存储库 impl 与自动装配的候选人进行测试

trying to run repository impl with autowired candidates for testing

我很好奇有一种方法可以让我 运行 一个包含自动装配候选人的存储库 impl,以及一个应用程序 main() (用于测试目的)。

我知道问题是包含 main 的 repo class 没有连接到 main() 方法中,这导致 none 自动连接的候选人被连接但是我找不到实现此目的的语法。

下面是示例代码片段,以及我遇到问题的部分中的评论

@Repository
@Transactional
public class RepositoryImpl implements Repository {

    @Autowired
    JdbcTemplate jdbcTemplate;

    String query = "some query"

    @Override
    public boolean runQuery() {
        Object[] params = {param1, param2};
        boolean result = jdbcTemplate.queryForObject(query , params, Integer.class) == 1;
        return result;
    }

    //included just for testing purposes
    public static void main(String[] args) {
        /*this is where i would like to run runQuery() to see a sample output
        * something like this: 
        * repositoryImpl = new RepositoryImpl();
        * syso(repositoryImpl.runQuery());
        */
    }
} 

我 运行 进入一个空指针,该指针来自 jdbc 模板,未正确连接。有人可以指导我如何使用自包含应用程序 main() 自动装配 class 吗?

这可能吗?

感谢您的帮助!

您无法轻松地为静态方法自动装配 (little hack)。

测试某物的最简单方法是...编写测试 ;)

@RunWith(SpringJUnit4ClassRunner.class)
public class RepositoryImplTest {

    @Autowired
    private Repository repository;

    @Test
    public void testJob() throws Exception {
        //when
        boolean val = repository.runQuery();

        Assert.assertTrue(val);
    }
}

查看 Unit Testing section