Java测试驱动开发(TDD)

一、基础知识

1.什么是TDD

TDD要求你先编写测试,再编码实现代码。

1.1怎么开始TDD

  • 编写测试代码
  • 运行测试代码
  • 编写实现代码
  • 运行测试代码
  • 重构
  • 运行测试代码
    在这里插入图片描述
    第一步,编写测试代码,然后运行测试代码,由于实现代码没有编写,所示测试执行一定是不通过的,如果通过了,那么就是有问题的就要找到问题。测试不通过才执行第二步。
    第二步,编写实现代码,然后运行测试代码,此时如果测试不通过,说明实现写得有问题,需要重新修改(重写)不通过测试的实现,如果测试通过了才能执行第三步。
    第三步,在实现基础上对实现进行重构优化,但不能引入新功能。重构测试不通过需要回到第二步基础上来操作。

2.测试工具

2.1 测试框架

  • Junit
  • TestNG
  • Hamcrest
  • AssertJ

2.2 代码覆盖率工具

  • Jacoco
    导入Jacoco插件:
apply plugin: 'jacoco'

编写测试,测试Controller:

@RunWith(SpringRunner.class)
@SpringBootTest
// 使用MockMvc自动配置
@AutoConfigureMockMvc
public class SimpleServicesPpApplicationTests {

    // 注入MockMvc
    @Autowired
    private MockMvc mockMvc ;

    // 开始对Controller测试 
    @Test
    public void testHello() throws Exception {
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/hello/abc/fed");
        mockMvc.perform(request).andExpect(MockMvcResultMatchers.status().isOk())
                .andExpect(MockMvcResultMatchers.content().string("{\"message\": \"hello abc fed\"}"));
    }

}

执行Jacoco测试:

> gradle test jacocoTestReport

查看Jacoco测试报告:在项目build目录下的reports->jacoco->test->html->index.html

2.3 Web测试框架

2.3.1Selenide
@Test
public void testLogin() {
	//  保持浏览器打开
    Configuration.holdBrowserOpen = true;
    // 打开网页 https://www.so.com/
    open("https://www.so.com/");
    // 设置 id为 input 的标签的value值为 哈哈
    $("#input").setValue("哈哈");
    // 设置id为 search-button 的标签为点击状态
    $("#search-button").click();
    System.out.println("----------------------");
}

猜你喜欢

转载自blog.csdn.net/qq122516902/article/details/88740636