Java 单元测试之合格的单元测试方式(2)
3. Spring的Junit测试3.1 Spring MVC
Junit4
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:my-spring.xml")
public class MyServiceTest {
@Autowired
private MyService xxx;
@Test
public void testFind() {
xxx.xxx();
}
}
junit5
注意junit5在RunWith注解变为ExtendWith,其中一个显著的优势是可以加载多个class了。
@RunWith
@ExtendWith
完整示例如下:
@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:my-spring.xml")
public class MyServiceTest {
@Autowired
private MyService xxx;
@Test
public void testFind() {
xxx.xxx();
}
}观看Spring源码也可以看出,junit5命名也变了,叫jupiter。
3.2 Spring boot junit
//@RunWith(SpringRunner.class) //junit4加上
@SpringBootTest
class ApplicationTests {
}4.testng
TestNG : 即Testing Next Generation,用JDK的annotation技术来强化测试功能,借助XML 文件强化测试组织结构而构建的测试框架。笔者也没使用过,有官方文档:testng.org/doc/documen…;据说功能更强大,支持xml方式。
引入pom,官方更新没有junit5频繁。
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.1.0</version>
<scope>test</scope>
</dependency>笔者也只是简单的使用过,不过一般而言,只会使用20%的功能(二八原则),改造demo。
package com.feng.demo;
import org.assertj.core.api.Assertions;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
class UserTest {
@BeforeSuite
static void before(){
}
@Test
void getResult() {
User user = new User();
String result = user.getResult("tom");
Assertions.assertThat(result).isEqualTo("tom\tjunit", result);
}
@Test
void setName() {
}
}更详细的可以看上面的链接文档,etg
总结
junit单元测试其实很简单,很多时候我们并没有规范而已。关于代码测试覆盖率,其实idea工具很完善了,eclipse同理。以idea为例。
在代码类上右键:
选择Test
即可自动生成单元测试,测试后就有覆盖率统计。
结果如下:
页:
[1]