gpt4 book ai didi

java - Spring DAO 测试

转载 作者:行者123 更新时间:2023-11-28 21:28:24 25 4
gpt4 key购买 nike

我听说建议为每个 DAO 类创建单独的接口(interface),以使其更容易测试。对“为什么”这个问题的回答是关于通过测试一替换原始 DAO 实现的可能性。但没有关于如何做到这一点的信息。

所以,我对如何做到这一点很感兴趣。

假设我们有简单的 DAO 接口(interface):

public interface PersonDao {
void add();
...
}

及其简单的实现:

@Repository
public class PersonDaoImpl implements PersonDao {

public void add() {
// doing something
}
}

我们怎样才能这样测试它:

public class PersonDaoTest {

@Autowire
FakePersonDao fakePersonDao;

@Test
public void addTest() {
fakePersonDao.add();
}
}

FakeDaoPersonDao 接口(interface)的第二个“测试”实现:

public class FakePersonDaoImpl implements PersonDao {

public void add() {
// doing something different
}
}

嗯?

我们应该在所有地方使用 @Autowired 并结合 @Qualifier 还是有更好的方法?

最佳答案

当人们建议用模拟代替真正的 DAO 时,他们是在谈论测试使用 DAO 的层。所以如果你有一个服务层,测试可能看起来像

public class MyServiceTest {
private MyServiceImpl objectUnderTest = new MyServiceImpl();
private PersonDao fakePersonDao;
@Before
public void setUp() {
fakePersonDao = new FakePersonDao(); // or define it using Mockito
objectUnderTest.setPersonDao(fakePersonDao);
}
}

通过这种方式,您可以行使需要测试的服务的功能,而不必依赖于访问 DAO 封装的任何资源。

关于java - Spring DAO 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com