我正在使用TestNG 6.9.9构建回归测试环境.但遇到一个我在使用JUnit时从未遇到过的问题.在我看来,当完成每个测试用例时,如果测试方法在与他们调用的相同的事务上下文中运行,则每个数据的更改将默认自动回滚.但似乎这不是事实,我不知道我的代码中是否有任何错误.请帮帮我.pom.xml中的属性,表示框架的版本
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springframework.version>4.2.4.RELEASE</springframework.version>
<hibernate.version>4.3.11.Final</hibernate.version>
<testng.version>6.9.9</testng.version>
</properties>
Run Code Online (Sandbox Code Playgroud)
显然,它们都是最新的.
我的考试班:
package com.noahwm.hkapp.api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.testng.Assert;
import org.testng.annotations.Test;
import com.noahwm.hkapp.api.db.dao.AppUserDao;
import com.noahwm.hkapp.api.db.model.AppUser;
import com.noahwm.hkapp.api.service.AppUserService;
@ContextConfiguration(locations = { "classpath:applicationContext-test.xml" })
public class AppUserServiceTestNGTest extends AbstractTestNGSpringContextTests {
@Autowired
private AppUserService appUserService;
@Test
@Rollback
@Transactional
public void testApp() {
AppUser appUser = new AppUser();
appUser.setAge(10);
appUser.setGender("F");
appUser.setMobilePhone("13219201034");
appUser.setName("HKAPP Test");
appUserService.createUser(appUser);
String appUserId = appUser.getId();
Assert.assertNotNull(appUserId);
}
}
Run Code Online (Sandbox Code Playgroud)
创建实体实例,而不是调用createUser()将其保存到DB.根据我在JUnit中所做的,即使我没有将@Rollback注释放在测试方法的前面,数据也会自动回滚.
AppUser的结构是:
package com.noahwm.hkapp.api.db.model; …Run Code Online (Sandbox Code Playgroud)