其实我真心想知道单元测试怎么写

liubey_zff 万达电商 开发组长/高级工程师/技术专家  2013-01-28 10:44:32
最简单的,
比如删除一个用户,
我不能每次跑单元测试之前都去数据库造一条数据,
然后把ID填写到测试方法中吧,
这一点都不酷,
求指导
...全文
1506 21 点赞 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Geek41 2013-10-25
单元测试本来就有点吵概念,怎么写并没有标准,看你想要达到多高的覆盖率来判定需要测试的unit的大小,所以我们平时写的就是测试嘛。个人看法,我平时都是先插入,再查询,修改,删除,用junit把crud都测试了,当然还有别的,用maven构建,打包,部署的时候都可以选择是否自动化测试(当然覆盖率比较低,写测试看它是否有价值,不一定都要写,王垠也这么说)
  • 打赏
  • 举报
回复
liubey_zff 2013-10-25
以下引自《修改代码的艺术》


单元测试运行得快。运行得不快的不是单元测试。

有些测试容易跟单元测试混淆起来。譬如下面这些测试就不是单元测试:

(1) 跟数据库有交互;

(2) 进行了网络间通信;

(3) 调用了文件系统;

(4) 需要你对环境作特定的准备(如编辑配置文件)才能运行的。

当然,这并不是说这些测试就是坏的。编写它们常常也是有价值的,而且你通常也会在单元测试用具内来编写它们。然而,将它们跟真正的单元测试区分开来还是很有必要的,因为这样你就能够知道哪些测试是你可以(在你进行代码修改的时候)快速运行的。

  • 打赏
  • 举报
回复
liubey_zff 2013-10-25
引用 17 楼 ggddll123 的回复:
根据《修改代码的艺术》,需要访问数据库的测试不是单元测试,需要访问网络的测试不是单元测试,需要访问文件系统的测试不是单元测试……
这个。。。好深奥的样子,我去拿那本书翻翻看。
  • 打赏
  • 举报
回复
小卜兔 2013-09-21
我们公司的单元测试都是直接运行看效果的。。提交到测试那边,也是直接运行看效果的。。
  • 打赏
  • 举报
回复
AlanGuo 2013-09-21
根据《修改代码的艺术》,需要访问数据库的测试不是单元测试,需要访问网络的测试不是单元测试,需要访问文件系统的测试不是单元测试……
  • 打赏
  • 举报
回复
wonka438 2013-01-31
mock数据吧,可以用excel mock几条数据 在进行删除,有工具能做这个,忘记名字了
  • 打赏
  • 举报
回复
引用 12 楼 liubey_zff 的回复:
引用 9 楼 AA5279AA 的回复:引用 7 楼 liubey_zff 的回复:CSDN啊,原谅我的无知吧,楼上的各位谢谢你们,你们没有说到点子上。。。我能不会用JUnit吗 我的意思是在对业务逻辑(比如删除用户)做单元测试的时候,我是不是在测试删除之前要用单元测试去生成一个用户(insert到数据库种),然后去校验删除的业务逻辑? 求大虾指点 如果不想对数据库……
这个办法不错,平时基本上都写单元测试,不过也是简单的像你7楼那样 先生成然后顺便删除
  • 打赏
  • 举报
回复
liubey_zff 2013-01-30
引用 10 楼 BaronZ 的回复:
引用 7 楼 liubey_zff 的回复:CSDN啊,原谅我的无知吧,楼上的各位谢谢你们,你们没有说到点子上。。。我能不会用JUnit吗 我的意思是在对业务逻辑(比如删除用户)做单元测试的时候,我是不是在测试删除之前要用单元测试去生成一个用户(insert到数据库种),然后去校验删除的业务逻辑? 求大虾指点 楼上那几个真心搞笑,还+++
早晨起来打开帖子我顿时就哭笑不得啊,哈哈,要疯了
  • 打赏
  • 举报
回复
liubey_zff 2013-01-30
引用 9 楼 AA5279AA 的回复:
引用 7 楼 liubey_zff 的回复:CSDN啊,原谅我的无知吧,楼上的各位谢谢你们,你们没有说到点子上。。。我能不会用JUnit吗 我的意思是在对业务逻辑(比如删除用户)做单元测试的时候,我是不是在测试删除之前要用单元测试去生成一个用户(insert到数据库种),然后去校验删除的业务逻辑? 求大虾指点 如果不想对数据库进行操作的话就使用spring在最后不论……
这个貌似有点意思,你写单元测试吗
  • 打赏
  • 举报
回复
liubey_zff 2013-01-30
引用 8 楼 justsmilence 的回复:
引用 7 楼 liubey_zff 的回复:CSDN啊,原谅我的无知吧,楼上的各位谢谢你们,你们没有说到点子上。。。我能不会用JUnit吗 我的意思是在对业务逻辑(比如删除用户)做单元测试的时候,我是不是在测试删除之前要用单元测试去生成一个用户(insert到数据库种),然后去校验删除的业务逻辑? 求大虾指点3楼那样,像你说的就可以..
那你平常工作鞋单元测试吗
  • 打赏
  • 举报
回复
BaronZ 2013-01-30
引用 7 楼 liubey_zff 的回复:
CSDN啊,原谅我的无知吧,楼上的各位谢谢你们,你们没有说到点子上。。。我能不会用JUnit吗 我的意思是在对业务逻辑(比如删除用户)做单元测试的时候,我是不是在测试删除之前要用单元测试去生成一个用户(insert到数据库种),然后去校验删除的业务逻辑? 求大虾指点
楼上那几个真心搞笑,还+++
  • 打赏
  • 举报
回复
失落夏天 2013-01-30
引用 7 楼 liubey_zff 的回复:
CSDN啊,原谅我的无知吧,楼上的各位谢谢你们,你们没有说到点子上。。。我能不会用JUnit吗 我的意思是在对业务逻辑(比如删除用户)做单元测试的时候,我是不是在测试删除之前要用单元测试去生成一个用户(insert到数据库种),然后去校验删除的业务逻辑? 求大虾指点
如果不想对数据库进行操作的话就使用spring在最后不论什么情况下都进行回滚操作。
  • 打赏
  • 举报
回复
引用 7 楼 liubey_zff 的回复:
CSDN啊,原谅我的无知吧,楼上的各位谢谢你们,你们没有说到点子上。。。我能不会用JUnit吗 我的意思是在对业务逻辑(比如删除用户)做单元测试的时候,我是不是在测试删除之前要用单元测试去生成一个用户(insert到数据库种),然后去校验删除的业务逻辑? 求大虾指点
3楼那样,像你说的就可以..
  • 打赏
  • 举报
回复
liubey_zff 2013-01-30
CSDN啊,原谅我的无知吧,楼上的各位谢谢你们,你们没有说到点子上。。。我能不会用JUnit吗 我的意思是在对业务逻辑(比如删除用户)做单元测试的时候,我是不是在测试删除之前要用单元测试去生成一个用户(insert到数据库种),然后去校验删除的业务逻辑? 求大虾指点
  • 打赏
  • 举报
回复
liubey_zff 2013-01-30
可能我这种想法不是很现实,我理解的单元测试存在偏差吧,话说这么大个论坛木有人说粗真像。。。 http://stackoverflow.com/questions/10288096/how-to-write-unit-tests-for-functions-that-rely-on-dynamic-data 我在stackoverflow看到这个帖子
  • 打赏
  • 举报
回复
导入junit库 测试的方法上注解@Test不就可以了吗?
  • 打赏
  • 举报
回复
dw_java08 2013-01-29
引用 1 楼 ch656409110 的回复:
导入junit库 测试的方法上注解@Test不就可以了吗?
++++1
  • 打赏
  • 举报
回复
Ade子夜 2013-01-29
引用 4 楼 BoJerry 的回复:
引用 1 楼 ch656409110 的回复:导入junit库 测试的方法上注解@Test不就可以了吗? +1. ...
顶啊啊
  • 打赏
  • 举报
回复
BoJerry 2013-01-29
引用 1 楼 ch656409110 的回复:
导入junit库 测试的方法上注解@Test不就可以了吗?
+1. ...
  • 打赏
  • 举报
回复
菖蒲芭芭 2013-01-29
测试方法里把你要删除的那个用户也insert到数据库中, 这样就酷了。。。
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2013-01-28 10:44
社区公告
暂无公告