例如说需要测试一个删除功能,大家是在测试方法的开头插入一条记录以供删除吗?还是什么其他方法?
还有一种情况是,例如一个电商系统,想测删除 SKU 接口,准备数据的时候就得先准备产品,然后再准备 SKU,大家是如何准备的?
例如说需要测试一个删除功能,大家是在测试方法的开头插入一条记录以供删除吗?还是什么其他方法?
还有一种情况是,例如一个电商系统,想测删除 SKU 接口,准备数据的时候就得先准备产品,然后再准备 SKU,大家是如何准备的?
|
1
V 友求教 求教
|
|
2
测试没有 before 和 after 吗?通常都是要在测试开头创建数据,结束的时候删掉的。
|
|
3
mock 一下,单元测试一般不依赖其他接口或者系统。
|
|
AhaochanDec 11, 2019
6
用 h2database,准备初始化 sql 脚本
|
|
KentYDec 11, 2019 via iPhone
8
google 下 flyway 和 h2
|
|
9
有数据库就不叫单元测试了
|
|
zuncengDec 11, 2019
10
dao 层做一个 mock 当然也可以用 sqlmock
|
|
chendyDec 11, 2019
11
既然是单元测试,那就 mock 掉 dao
否则就脚本塞数据,直接测接口,做集成测试 |
|
greenlaw110Dec 11, 2019
12
mock 是常见的方式, 不过涉及到数据库操作的情况下,mock 总感觉不靠谱. 啥都 mock 了,函数里面也没有什么逻辑, 测试也失去了应有的作用.
这也是我一直很纠结单元测试的原因之一. 后来自己折腾出了一套 functional 测试工具, 数据准备与清理工作也不成问题了. 有兴趣的同学可以参考一下这里: https://gitee.com/actframework/act-doc/blob/master/cn/test.md#-82-%E5%87%86%E5%A4%87%E6%B8%85%E7%90%86%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE |
|
13
|
|
killergunDec 11, 2019
15
自己 mock 数据进行单元测试。不实际连接数据库
|
|
phpcxyDec 11, 2019
16
我都是开始测试的时候创建一些记录,然后测试完回滚
|
|
abcbuzhimingDec 11, 2019
17
想问一下,你们本地完全没有数据库的吗?这种涉及到数据库的难道不应该至少本地建个库(或者专门一个数据库服务器)测试一下吗
|
|
fkdogDec 11, 2019
18
spring 在测试类上打上 @transactional 注解。
这样运行完测试方法会自动回滚数据,比 before after 清理资源方式更简单 |
|
mingoingDec 11, 2019
19
sqlite 内存模式了解下
|
|
liuzhaowei55Dec 11, 2019
20
spring boot + jpa 可使用 @DataJpaTest 注解,会自动回滚。
|
|
lazyfighterDec 11, 2019
21
我今天刚提问这个问题,之前依赖 mysqlServer,目前依赖 embeddedH2
|
|
slyang5Dec 11, 2019
22
|
|
dengtongcaiDec 11, 2019 via iPhone
24
mock 哇
|
|
janxinDec 11, 2019
25
单测目前都是 Mock
|
|
kanegDec 11, 2019 via iPhone
26
如果不依赖特定数据库的特性,可以用 h2,完全不依赖运行环境,一次编写,随处运行。
|
|
luozicDec 11, 2019
27
Java 有不少集成版本的测试 demo 数据库,H2,monogodb,redis 都有对应的,即使没有,按 JDBC 也可以 mock
|
|
daimazhaDec 11, 2019
28
内嵌
|
|
hantsyDec 11, 2019
29
终于看到一个技术帖子了。
写 Java 测试离不开 JUnit。在 Spring 下写测试比较简单些,Spring 自身带的测试工具很全。 https://github.com/hantsy/building-restful-apis-with-springmvc-gitbook/blob/master/testing.md (比较老了一点) Spring Boot 1.4 中增加了大量工具简化测试: https://github.com/hantsy/building-restful-apis-with-springmvc-gitbook/blob/master/boot-1.4.md 数据库相关的单元测试可以 Mock 相应的操作(比如 Mock JpaRepsoitory ),集成测试时也需要创建数据库,初始化数据为测试准备,Spring Boot 可以使用嵌入式数据库代替(不用清理数据)。 Java EE 的测试参考: Java EE 6: https://github.com/hantsy/signup-app/tree/master/src/test/java/org/company/test Java EE 7: https://github.com/hantsy/ee7-jaxrs-sample/tree/master/vanilla/src/test/java/com/hantsylab/example/ee7/blog Java EE 8: https://github.com/hantsy/javaee8-jaxrs-sample/tree/master/backend/src/test/java/com/github/hantsy/ee8sample/rest |
|
lihuayangDec 11, 2019
30
用 h2。单测前准备好 ddl (新建表)、dml (数据),每次运行单测都加载这两个文件。干净,不会污染测试环境的库。
|
|
p1094358629Dec 11, 2019
31
我自己写了一个 basicTemplateTest 基类。模板方法:
提供了编程式事务,配置 setRollBackOnly().即用 spring 的 jdbc 自动回滚。 |
|
zhuzhibinDec 11, 2019 via iPhone
32
你这种场景应该叫验收测试吧 通常是 before 前初始化 after 清除掉咯
|
|
springzDec 11, 2019
33
启动一个 docker,用完关闭。
|
|
springzDec 11, 2019
34
模拟 dao 我也是我纠结的点,还是尽量真实吧。
|
|
AbrahamGreysonDec 11, 2019
35
主流的方式是在 setup teardown 里准备数据, 清空数据库。
上面说 mock 的, 楼主就是要测数据库。 |
|
desDec 11, 2019 via Android
36
+1 感觉本来就是 curd,mock 了 dao 层就没啥好测的了 😂
|
|
springzDec 11, 2019
37
我一直反对 dao 层单元测试 mock
|
|
avalon0624Dec 11, 2019
38
用 migrate,开始前清空数据库,生成符合条件的测试数据
|
|
39
```
单元测试( unit testing ),是指对软件中的最小可测试单元进行检查和验证。 ``` 都连数据库了,还叫单元测试吗? |
|
FrankDDec 11, 2019 via Android
40
可以用本地数据库
|
|
xuanbgDec 12, 2019
42
SQL 语句本来就或多或少包含逻辑,另外数据结构的调整甚至数据库版本的升级,单元测试都不管的么? mock 数据做单元测试的,怕是没更新过数据库结构吧
|
|
diluDec 12, 2019 via Android
43
如果修改了数据库里面的数据 这就叫数据库测试了。当然并没有严格区分,你非要测试也没问题的。
|
|
ebingtelDec 12, 2019
45
我是先 dump 一份测试数据库(不含数据),跑单元测试之后,再 drop 掉……
|
|
zhenjiachenDec 12, 2019
46
这不是很简单吗?如果用了 Spring 的注解事务,不管是 jpa 还是 mybatis 使用单元测试在方法或者类上面加事务注解测试执行完了不管是失败还是成功都会回滚的啊。注意要用 Spring tx 里面的 Transactional。
|
|
zclHITDec 12, 2019
47
mock repository 的返回结果,单元测试,顾名思义就是测一个单元。
(整套流程全跑通那是集成测试。。。 |
|
PoetAndPoemDec 12, 2019 via Android
48
一般 afterclass 做回滚
|
|
49
我想做的那就是集成测试了,调接口,然后 controller service dao 全部跑,之前误解了,sorry 大伙;
我现在是单独建一个测试库(现存开发库、测试库、正式库),然后每次启动测试都通过 jpa 自动生成表( hibernate ),然后在 spring boot 的启动任务(放在 test 包中,不会打包到正式代码)中利用 repo 往里面塞准备的数据。 我不想用 SQL 的原因是我想我在改动 Entity 类的时候能够及时的发现错误,容易维护一些,SQL 的话就只能等执行的时候报错了。 |
|
zhangjiayi1095Dec 16, 2019
50
用的 h2
|
|
sunxiansongJun 8, 2020
51
测之前 docker 起一个,完了 autoRemove
缺点就是起停一个 container 差不多要 3 秒 |