TDD 是什么
TDD 就是测试驱动开发, 以测试用例为主导, 去开发项目, 业务代码该怎么写还是怎么写, 在实现 UI 之前, 可以先实现 Test 用例, 通过 test 来实现对业务场景的模拟, 最终让你的代码更稳定.
大叔认为 tdd 的作用
代码更稳定, bug 在发布之前被暴露出来
持续集成更需要它, 当你的项目通过 tdd 之后, 就可以通过自动化工具发布了, 这最起码保证了代码是没有问题的
核心模块更稳定, 当你的核心模块修改或者添加新功能后, 你需要写测试用例来保存你我修改和添加的模型是正确的, 最起码保证了它没有修改其它的功能, 因为你的代码可能被多个模块引用, 而每个模块都有自己的测试用例, 所以, 核心模块修改后, 需要为它做测试.
项目与测试项目是统一的
在 springboot 框架里, 我们在建立一个项目后, 会同时建立一个测试项目, 大叔觉得, 这是一个很好的设计和习惯, 对于. net 开发人员来说, 也应该这样, 在建立一个项目后, 同时也写一下它的单元测试!
mongodb 模块的测试
- public class MongodbTest {
- @Autowired
- MongoTemplate mongoTemplate;
- @Test
- public void add() {List amountConfigs = ImmutableList.of(TaxAmountConfig.AmountConfig.builder()
- .rate(1)
- .thresholdMax(5000)
- .thresholdMin(3000)
- .value(10)
- .build()
- );
- TaxAmountConfig taxAmountConfig = TaxAmountConfig.builder()
- .base(3000)
- .accountPeriod(YearMonth.of(2017, 5))
- .amountConfigs(amountConfigs)
- .build();
- mongoTemplate.insert(taxAmountConfig);
- }
- }
测试时带有环境属性
你的测试代码完全可以指定一种环境, 如开发, 生产, 测试等, 对哪个环境有效, 可以通过 @Profile 来实现
- @Configuration
- @Profile("integTest")
- public class MockClientTest {
- @Bean
- public MockClient mockClient() {
- MockClient client = mock(MockClient.class);
- when(client.balanceSheet(
- anyString()))
- .thenReturn("OK");
- return client;
- }
- }
来源: http://www.jianshu.com/p/9216c53afef5