junit4测试controller里的数据写入

lmkght 2020-09-20 04:51:07
controller的方法里有一个保存数据的逻辑
junit测试里面传入了要保存的数据
但会报mapper空指针的错误

图1是controller的方法

图二是测试类的方法


我需要怎么做才能正常的去测试数据的写入
我不想单独测试mapper写入 是想测试一个整体的流程 从传入数据到写入返回
...全文
3456 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmkght 2020-10-09
  • 打赏
  • 举报
回复
引用 7 楼 KeepSayingNo 的回复:
junit测试是用的mock,不是真实的往数据库插入数据,你仅仅为了测一个controller的逻辑,就不用管dao干了什么,你把controller的逻辑走通就行了,dao层的再写别的测试用例
想搞一个整体测试来着
街头小贩 2020-09-21
  • 打赏
  • 举报
回复
引用 4 楼 lmkght 的回复:
[quote=引用 3 楼 街头小贩 的回复:]你的mapper是撒类型呀?若是转换类的框架类(fastxml)只要拿到spring中注册的bean, 若是测试spring mvc controller方法最后用mock框架不要用上面贴的哪种业务测试:参考一下
mapper是dao层[/quote]mybatis的?你需要引入配置文件并加载mybatis的相关bean
lmkght 2020-09-21
  • 打赏
  • 举报
回复
引用 3 楼 街头小贩 的回复:
你的mapper是撒类型呀?若是转换类的框架类(fastxml)只要拿到spring中注册的bean, 若是测试spring mvc controller方法最后用mock框架不要用上面贴的哪种业务测试:参考一下
mapper是dao层
KeepSayingNo 2020-09-21
  • 打赏
  • 举报
回复
junit测试是用的mock,不是真实的往数据库插入数据,你仅仅为了测一个controller的逻辑,就不用管dao干了什么,你把controller的逻辑走通就行了,dao层的再写别的测试用例
lmkght 2020-09-21
  • 打赏
  • 举报
回复
引用 5 楼 街头小贩 的回复:
[quote=引用 4 楼 lmkght 的回复:][quote=引用 3 楼 街头小贩 的回复:]你的mapper是撒类型呀?若是转换类的框架类(fastxml)只要拿到spring中注册的bean, 若是测试spring mvc controller方法最后用mock框架不要用上面贴的哪种业务测试:参考一下
mapper是dao层[/quote]mybatis的?你需要引入配置文件并加载mybatis的相关bean[/quote] 好的 我尝试一下
街头小贩 2020-09-20
  • 打赏
  • 举报
回复
你的mapper是撒类型呀?若是转换类的框架类(fastxml)只要拿到spring中注册的bean, 若是测试spring mvc controller方法最后用mock框架不要用上面贴的哪种业务测试:参考一下
街头小贩 2020-09-20
  • 打赏
  • 举报
回复

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:applicationContext.xml" })
public abstract class AbstractSpringTest {}

public class SpringBeanTest extends AbstractSpringTest implements ApplicationContextAware {
	private ApplicationContext ac;
	private MemberLevelService memberLevelService;
	
	@Override
	public void setApplicationContext(ApplicationContext arg0) throws BeansException {
		this.ac = arg0;
	}
	
	@Before
	public void before() {
		memberLevelService = ac.getBean(MemberLevelService.class);
	}
	@Test @Ignore
	public void testMemberLevel() {
		double sc = 32;
		Result<MemberLevel> a = memberLevelService.getMemeberLevel(sc);
		if(a.isSuccess()) {
			System.out.println("level no: "+a.successValue().getId()+", title: "+a.successValue().getNames());
		}else {
			System.out.println("level query fail");
		}
	}
}
环境jdk8, junit 4.12, spring 5.0.7.RELEASE, pom.xml部分的测试依赖

		<!-- java unit test -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring-framework.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		<!-- -javaagent/InstrumentationLoadTimeWeaver -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-instrument</artifactId>
			<version>${spring-framework.version}</version>
		</dependency>
街头小贩 2020-09-20
  • 打赏
  • 举报
回复
要在junit中集成spring的环境

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧