Junit4 套件测试

1 概述

在本指南中,我们将学习如何一次运行多个测试类。将Suite用作运行程序可以使您手动构建一个包含许多类测试的套件。它等效于JUnit 3.8.x静态Test suite()方法的JUnit 4。要使用它,请使用@RunWith(Suite.class)和@SuiteClasses(TestClass1.class,...)注释类。当您运行此类时,它将运行所有套件类中的所有测试。
让我们创建一个简单的maven项目并演示Suite的用法。

2 创建简单的Maven项目

让我们创建一个简单的Maven项目。通过执行以下命令创建简单的Maven项目:
mvn archetype:generate
-DgroupId=org.yourcompany.project
-DartifactId=application
在maven项目构建成功之后,maven将创建一个默认的文件夹结构。

3 项目包装结构

  • src/main/java : Java源代码包和类
  • src/main/resources :非Java资源,例如属性文件和Spring配置
Test
  • src/test/java :测试源代码包和类
  • src/test/resources :非Java资源,例如属性文件和Spring配置
让我们根据以下包装结构创建包装和类。
── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── yiidian
    │   │           └── junit
    |   │               └── Login.java
    |   │               └── LoginService.java
    |   │               └── User.java
    |   │               └── UserService.java
    │   ├── resources
    └── test
        ├── java
        │   └── com
        │       └── yiidian
        │           └── junit
        │               └── LoginServiceTest.java
        │               └── UserServiceTest.java
        │               └── SuiteTest.java
        └── resources

4 更新pom.xml文件中的JUnit依赖关系

<dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 <scope>test</scope>
</dependency>

让我们创建一个登录服务和用户服务功能,然后将这两个功能作为一个套件进行测试。

5 创建LoginService.java和LoginServiceTest.java

5.1 LoginService.java

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Login {
 private String userName;
 private String password;
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
}

package com.developersguide.junit.suites;

public class LoginService {
 public boolean authenticate(String userName, String password){
  if("demo".equals(userName) && "demo".equals(password)){
   return true;
  }
  return false;
 }
}

5.2 LoginServiceTest.java

package com.yiidian.junit.suites;
import static org.junit.Assert.assertTrue;

import static org.junit.Assert.assertFalse;
import org.junit.Test;
/**
 * 一点教程网: http://www.yiidian.com
 */
public class LoginServiceTest {
 @Test
 public void authenticateSuccessTest(){
  LoginService login = new LoginService();
  assertTrue("authenticate failed", login.authenticate("demo", "demo"));
 }
 
 @Test
 public void authenticateFailTest(){
  LoginService login = new LoginService();
  assertFalse("authenticate failed", login.authenticate("demo1", "demo"));
 }
}

输出结果为:

6.创建UserService.java和UserServiceTest.java

6.1 UserService.java

/**
 * 一点教程网: http://www.yiidian.com
 */
public class User {
 private int id;
 private String name;
 public User(int id,String name){
  this.id = id;
  this.name = name;
 }
}
package com.developersguide.junit.suites;

import java.util.ArrayList;
import java.util.List;

public class UserService {
 private List<User> list = new ArrayList<User>();
 
 public User createUser(User user){
  list.add(user);
  return user;
 }
 
 public List<User> getUsers(){
  return this.list;
 }
 
 public void deleteUser(User user){
  list.remove(user);
 }
}

6.2 UserServiceTest.java

package com.yiidian.junit.suites;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.util.List;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;

public class UserServiceTest {
 private User user;
 private UserService userService = new UserService();
 
 @Before
 public void setup(){
  user = new User(100, "ramesh");
 }
 
 @Test
 public void userServiceTest(){
  userService.createUser(user);
  List<User> users = userService.getUsers();
  assertEquals(1, users.size());
  userService.deleteUser(user);
  users = userService.getUsers();
  assertEquals(0, users.size());
 }
 
}

7 创建测试套件

package com.yiidian.junit.suites;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
/**
 * 一点教程网: http://www.yiidian.com
 */
@RunWith(Suite.class)
@Suite.SuiteClasses({
  LoginServiceTest.class,
  UserServiceTest.class,
})
public class SuiteTest {

}

8 结论

在本指南中,我们学习了如何通过创建Maven项目来为多个测试类创建测试套件。

热门文章

优秀文章