gpt4 book ai didi

java - 使用 Junit 测试 Hibernate DAO

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:43 24 4
gpt4 key购买 nike

我在我的项目中结合使用了 Spring 和 Hibernate,并且想测试 DAO 方法,如 SaveDelete 方法。

daoFoundation 是在 hibernateSession 上创建的包装器类。

@Override
public String createSubject(Subject subject) {
String subjectId = (String) daoFoundation.save(subject);
return subjectId;
}

这是我在 JUnit Runs with SpringJunit4ClassRunner 中写的内容
我在我的 SetupMethod 中创建了主题对象。

@Test
public void createSubjectTest(){
subjectDao.createSubject(subject);
assertNotNull(hassSubjectSelection.getId());
}

这就足够了吗?还是我需要在我的测试类中写任何额外的东西?

最佳答案

最简单的方法是导入您的 Spring 应用程序上下文,在您要测试的 DAO 中 Autowiring ,然后将您的测试方法或整个类标记为 @Transactional。这将创建一个 Hibernate session ,运行您的测试,然后自动回滚事务,这样您的测试就不会影响您的数据库状态。

看看如何使用 Spring 运行单元测试 here .您可以使用 @ContextConfiguration 注释让 Spring 创建您的整个应用程序上下文。因此,如果您使用名为 database-servlet.xml 的 XML 文件创建数据库,那么您将注释

@ContextConfiguration(locations={"classpath:/database-servlet.xml"})
公共(public)类测试()

您可以使用注解 @RunWith(SpringJUnit4ClassRunner.class) 在您的单元测试中使用 Spring TestContext Framework 的功能。这使您可以做一些事情,例如声明应该抛出的预期异常、运行定时测试、重复运行 X 次测试以及其他一些很酷的事情。

基本上,要使其正常工作,您的测试类应类似于以下内容:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={YOUR APP CONTEXT FILES HERE AS A COMMA SEPARATED LIST})
public class Test(){
@Autowired
private YourDAO yourDAO;

@Test
@Transactional
public void testSave(){
//Test save method here. Any database changes made here will be
//automatically rolled back when the test finishes.
}

让我知道这是否有效。

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

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