1)单元测试--方法级的测试--不是所有的系统都可以单元测试(设计太烂)--能进行单元测试需要合理的系统拆分
2)单元测试--质量保证+设计的检验手段(看是不是高内聚低耦合)
3)单元测试一般不会访问disk、db、网络。。。
4) junit-dep
金字塔
功能测试 维护成本高
集成测试 要访问,数据库,成本也比较高
单元测试 成本低 - 只关注自己的业务逻辑,速度快
单元测试,与时间耦合,很可能会经常失败。
5)Junit--maven--junit-dep(依赖别的包但不是把代码直接copy进去的)
6)@BeforeClass--静态初始化--对应于 @AfterClass
7)@Before--每个test跑之前都要跑一次--对应于@After
8)@Test(expect= 异常.class)--对异常的测试
9)Maven--hamcrest--Matcher
10)Junit--尽量用assertThat
11)join不要太多,sql尽量不要有业务逻辑
12)测试的函数名可以很长,关键要能表达出来目的,如下:
@Test
public void should_save_non_exist_user_to_store(){}
13)IDEA快捷键--CTRL+SHIFT+UP/DOWN 代码 向上/下移动
14)如果一个类A强依赖另外一个类B,则A中的构造函数的参数应该有类B--不要烂用annotation
15)mock是解决fake的一种方法--mockito-all--maven
UserDao dao=Mockito.mock(UserDao.class);
... ...
when(dao.findByUsername("admin")).thenReturn(user);
16)前端输入输出,常规的测试--后端IO用mock来测试
17)单元测试不能随机成功失败
18)使用 mock 进行测试要求我们把可测试与不可测试的代码分开
2. 听取集成测试的相关知识
1. 单元测试针对Service层,集成测试针对Dao层
2. 集成化测试使用Spring test包
@RunWith(SpringJunit4ClassRunner.class)
指定使用的测试执行类为SpringJunit4ClassRunner。
@ContextConfiguration("classpath:test.xml")
配置加载的Spring配置文件的位置。
@TransactionConfiguration(transactionManager = "txManager")
对事务进行配置
@Rollback(false)
测试完成以后,对数据库的操作会自动回滚,不会对数据库造成污染;设置为false以后,可保证数据的操作不被回滚
3. Mock管理平台
2)单元测试--质量保证+设计的检验手段(看是不是高内聚低耦合)
3)单元测试一般不会访问disk、db、网络。。。
4) junit-dep
金字塔
功能测试 维护成本高
集成测试 要访问,数据库,成本也比较高
单元测试 成本低 - 只关注自己的业务逻辑,速度快
单元测试,与时间耦合,很可能会经常失败。
5)Junit--maven--junit-dep(依赖别的包但不是把代码直接copy进去的)
6)@BeforeClass--静态初始化--对应于 @AfterClass
7)@Before--每个test跑之前都要跑一次--对应于@After
8)@Test(expect= 异常.class)--对异常的测试
9)Maven--hamcrest--Matcher
10)Junit--尽量用assertThat
11)join不要太多,sql尽量不要有业务逻辑
12)测试的函数名可以很长,关键要能表达出来目的,如下:
@Test
public void should_save_non_exist_user_to_store(){}
13)IDEA快捷键--CTRL+SHIFT+UP/DOWN 代码 向上/下移动
14)如果一个类A强依赖另外一个类B,则A中的构造函数的参数应该有类B--不要烂用annotation
15)mock是解决fake的一种方法--mockito-all--maven
UserDao dao=Mockito.mock(UserDao.class);
... ...
when(dao.findByUsername("admin")).thenReturn(user);
16)前端输入输出,常规的测试--后端IO用mock来测试
17)单元测试不能随机成功失败
18)使用 mock 进行测试要求我们把可测试与不可测试的代码分开
2. 听取集成测试的相关知识
1. 单元测试针对Service层,集成测试针对Dao层
2. 集成化测试使用Spring test包
@RunWith(SpringJunit4ClassRunner.class)
指定使用的测试执行类为SpringJunit4ClassRunner。
@ContextConfiguration("classpath:test.xml")
配置加载的Spring配置文件的位置。
@TransactionConfiguration(transactionManager = "txManager")
对事务进行配置
@Rollback(false)
测试完成以后,对数据库的操作会自动回滚,不会对数据库造成污染;设置为false以后,可保证数据的操作不被回滚
3. Mock管理平台
公司自己开发的测试环境,可模拟API支持json和xml。
整理自 : workmates 日报