Junit--使用stub测试一个HTTP连接

Junit测试类

package cn.howe.lis.jetty;

import org.junit.Test;
import static org.junit.Assert.*;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.junit.BeforeClass;
import org.junit.Test;
import org.mortbay.jetty.HttpHeaders;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.AbstractHandler;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.util.ByteArrayISO8859Writer;


public class JettyTest {

	private static JettyTest jettyTest;
	
	@BeforeClass
	public static void setUp() throws Exception {
		Server server = new Server(8080);
		jettyTest = new JettyTest();
		Context contentOKContent = new Context(server, "/testGetContentOk");
		contentOKContent.setHandler(jettyTest.new GetContentOKHandlerTest());
		
		server.setStopAtShutdown(true);
		server.start();

	}

	public void tearDown() {}

	@Test
	public void testGetContentOk() throws Exception {
		WebClient client = jettyTest.new WebClient();
		String result = client.getContent(new URL("http://localhost:8080/testGetContentOk"));
		assertEquals("stub use jetty, it works", result);
		
	}

	// 内部类
	private class GetContentOKHandlerTest extends AbstractHandler {

		@Override
		public void handle(String target, HttpServletRequest req, HttpServletResponse resp, int dispatch)
				throws IOException, ServletException {

			OutputStream out = resp.getOutputStream();
			ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer();
			writer.write("stub use jetty, it works");
			writer.flush();
			resp.setIntHeader(HttpHeaders.CONTENT_LENGTH, writer.size());
			writer.writeTo(out);
			out.flush();
		}
	}

	private class WebClient {
		public String getContent(URL url) {
			StringBuffer content = new StringBuffer();
			try
			{
				HttpURLConnection connection = (HttpURLConnection) url.openConnection();
				connection.setDoInput(true);
				InputStream is = connection.getInputStream();
				byte[] buffer = new byte[2048];
				int count;
				while (-1 != (count = is.read(buffer)))
				{
					content.append(new String(buffer, 0, count));
				}
			}
			catch ( IOException e )
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			return content.toString();
		}
	}
}

 

 

使用stub替换Web服务器资源,使用Jetty作为嵌入式服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于使用 JUnit Jupiter API 编写测试用例,可以按照以下步骤进行: 1. 导入依赖:首先,在你的项目中添加 JUnit Jupiter API 的依赖。如果你使用 Maven,则可以在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.x.x</version> <scope>test</scope> </dependency> ``` 2. 创建测试类:在你的测试源代码目录中(通常是 `src/test/java`),创建一个新的测试类。这个类应该以 `Test` 结尾,并且包含一些测试方法。 ```java import org.junit.jupiter.api.Test; public class MyTestClass { @Test public void myTestMethod() { // 在这里编写你的测试逻辑 } } ``` 3. 编写测试方法:在测试类中,使用 `@Test` 注解来标记测试方法。测试方法应该是公共的、无返回值的,并且不带任何参数。 ```java @Test public void myTestMethod() { // 在这里编写你的测试逻辑 } ``` 4. 编写断言:在测试方法中,使用适当的断言来验证你的代码逻辑。JUnit Jupiter 提供了丰富的断言方法,例如 `assertEquals()`、`assertTrue()`、`assertNotNull()` 等等。 ```java @Test public void myTestMethod() { // 假设你正在测试一个计算器类的 add() 方法 Calculator calculator = new Calculator(); int result = calculator.add(2, 3); assertEquals(5, result); } ``` 5. 运行测试使用你的构建工具(如 Maven 或 Gradle)运行测试。你也可以在 IDE 中直接运行测试方法。 这样,你就可以使用 JUnit Jupiter API 编写和运行测试用例了。希望这些步骤能帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值