Java单元测试——容器内部测试

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: Java单元测试——容器内部测试

1 HttpUnit


package HttpUnit.com.jerry;
import static org.junit.Assert.*;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.SAXException;
import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.HttpUnitOptions;
import com.meterware.httpunit.PostMethodWebRequest;
import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebLink;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
public class WebTest {
  private  WebConversation wc;
  @Before
  public void setUp(){
    wc = new WebConversation();
  }
  @Test
  public void testEBusiness() throws IOException, SAXException {
    HttpUnitOptions.setScriptingEnabled(false);
    String username = "cindy";
    String password = "123456";
    WebRequest req = new PostMethodWebRequest("http://127.0.0.1:8000/login_action/");
    //给请求加上参数
    req.setParameter("username",username);
    req.setParameter("password",password);
    //获取响应对象
    WebResponse resp = wc.getResponse(req);
    //用getText方法获取相应的全部内容
    assertTrue(resp.getText().contains("购物车"));
  }
  @Test
  public void test3testing() throws IOException, SAXException {
    HttpUnitOptions.setScriptingEnabled(false);
    String CheckWord = "测试";
    WebResponse req = wc.getResponse("http://www.3testing.com/include/head.htm");
    WebLink link = req.getLinkWith("我的课程");
    link.click();
    WebResponse nextLink = wc.getCurrentPage();
    assertTrue(nextLink.getText().contains(CheckWord));
  }
}


2 DbUnit


AbstractDbUnitTestCase.java

package DbUnit.com.jerry;
import static org.junit.Assert.*;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ReplacementDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.ext.hsqldb.HsqldbConnection;
import org.junit.AfterClass;
import org.junit.BeforeClass;
public abstract class AbstractDbUnitTestCase {
  public static final String USER_FIRST_NAME = "Jeffrey";
  public static final String USER_LAST_NAME = "Lebowsky";
  public static final String USER_USERNAME = "ElDuderino";
  protected static UserDaoJdbcImpl dao = new UserDaoJdbcImpl();
  protected static Connection connection;
  protected static HsqldbConnection dbunitConnection;
  @BeforeClass
  public static void setupDatabase() throws Exception {
  String driverName="com.mysql.jdbc.Driver";
  String userName="root";
  String userPasswd="123456";
  String dbName="hr";
  String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
    Class.forName(driverName).newInstance(); 
    connection = DriverManager.getConnection(url);
    dbunitConnection = new HsqldbConnection(connection,null);
    dao.setConnection(connection);
    dao.createTables();
  }
  @AfterClass
  public static void closeDatabase() throws Exception {
    if ( dbunitConnection != null ) {
      dao.dropTables();
      dbunitConnection.close();
      dbunitConnection = null;
    }
  }
  public static IDataSet getDataSet(String name) throws Exception {
    InputStream inputStream = new FileInputStream(name);
    assertNotNull("file " + name + " not found in classpath", inputStream );
    Reader reader = new InputStreamReader(inputStream);
    FlatXmlDataSet dataset = new FlatXmlDataSet(reader);
    return dataset;
  }
  public static IDataSet getReplacedDataSet(String name, long id) throws Exception {
    IDataSet originalDataSet = getDataSet(name);
    return getReplacedDataSet(originalDataSet, id);
  }
  public static IDataSet getReplacedDataSet(IDataSet originalDataSet, long id) throws Exception {
    ReplacementDataSet replacementDataSet = new ReplacementDataSet(originalDataSet);
    replacementDataSet.addReplacementObject("[ID]", id);
    replacementDataSet.addReplacementObject("[NULL]", null);
    return replacementDataSet;
  }
  public static User newUser() {
      User user = new User();
      user.setFirstName(USER_FIRST_NAME);
      user.setLastName(USER_LAST_NAME);
      user.setUsername(USER_USERNAME);
      return user;
    }
  public static void assertUser(User user) {
      assertNotNull(user);
      assertEquals(USER_FIRST_NAME, user.getFirstName());
      assertEquals(USER_LAST_NAME, user.getLastName());
      assertEquals(USER_USERNAME, user.getUsername());
    }
}


UserDaoJdbcImplTest.java

package DbUnit.com.jerry;
import static org.junit.Assert.*;
import org.dbunit.Assertion;
import org.dbunit.dataset.IDataSet;
import org.dbunit.operation.DatabaseOperation;
import org.junit.Test;
public class UserDaoJdbcImplTest extends AbstractDbUnitTestCase{
  @Test
  public void testGetUserById() throws Exception {
    IDataSet setupDataSet = getDataSet("Test/DbUnit/com/jerry/user.xml");
    DatabaseOperation.CLEAN_INSERT.execute(dbunitConnection, setupDataSet);
    User user = dao.getUserById(1);
    assertNotNull( user);
    assertEquals( "Jeffrey", user.getFirstName() );
    assertEquals( "Lebowsky", user.getLastName() );
    assertEquals( "ElDuderino", user.getUsername() );
  }
  @Test
  public void testAddUseIgnoringId() throws Exception {
    IDataSet setupDataSet = getDataSet("Test/DbUnit/com/jerry/user.xml");
    DatabaseOperation.DELETE_ALL.execute(dbunitConnection, setupDataSet);
    User user = newUser();
    int id = dao.addUser(user);
    assertTrue(id>0);
    IDataSet expectedDataSet = getDataSet("Test/DbUnit/com/jerry/user.xml");
    IDataSet actualDataSet = dbunitConnection.createDataSet();
    Assertion.assertEqualsIgnoreCols( expectedDataSet, actualDataSet, "users", new String[] { "id" } );
  }
  @Test
  public void testGetUserByIdReplacingIds() throws Exception {
  int id = 42;
    IDataSet setupDataset = getReplacedDataSet("Test/DbUnit/com/jerry/user-token.xml", id );
    DatabaseOperation.INSERT.execute(dbunitConnection, setupDataset);
    User user = dao.getUserById(id);
    assertUser(user);
  }
  @Test
  public void testAddUserReplacingIds() throws Exception {
    IDataSet setupDataSet = getDataSet("Test/DbUnit/com/jerry/user-token.xml");
    DatabaseOperation.DELETE_ALL.execute(dbunitConnection, setupDataSet);
    User user = newUser();
    int id = dao.addUser(user);
    assertTrue(id>0);
    IDataSet expectedDataSet = getReplacedDataSet(setupDataSet, id );
    IDataSet actualDataSet = dbunitConnection.createDataSet();
    Assertion.assertEquals( expectedDataSet, actualDataSet );
  }
}


user-token.xml

<?xml version="1.0"?>
<dataset>
  <users id="[ID]" username="ElDuderino" first_name="Jeffrey" last_name="Lebowsky" />
</dataset>


user.xml

<?xml version="1.0"?>
<dataset>
  <users id="1" username="ElDuderino" first_name="Jeffrey" last_name="Lebowsky" />
</dataset>


目录
相关文章
|
19天前
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
21天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
63 2
|
1月前
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
37 1
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
29天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
23 5
|
1月前
|
存储 人工智能 Java
将 Spring AI 与 LLM 结合使用以生成 Java 测试
AIDocumentLibraryChat 项目通过 GitHub URL 为指定的 Java 类生成测试代码,支持 granite-code 和 deepseek-coder-v2 模型。项目包括控制器、服务和配置,能处理源代码解析、依赖加载及测试代码生成,旨在评估 LLM 对开发测试的支持能力。
38 1
|
1月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
43 4
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
76 3
|
1月前
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
104 0
|
1月前
|
分布式计算 Java 大数据
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
34 0
|
2月前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
73 6
下一篇
无影云桌面