java - 发出与 URI 的单元测试连接

标签 java http junit

我正在对我的 Java/Jersey Web 服务进行单元测试,遇到了一个有趣的测试用例。我正在检查不同 URI 条目的状态代码,以确保不正确的 URI 不会破坏我的代码或任何东西。在我输入无效字符(例如 !@$#<> 等)的测试用例中,我的浏览器会像我预期的那样出现 404 错误,但 JUnit 将错误显示为 500 错误。当我输入诸如“<134->”之类的东西以及我尝试注入(inject) html 代码(例如“myURI<html><p>hello</p><br></html>/restofmyURI”)时,就会发生这种情况。

为什么我会为同一个调用获得不同的服务器响应,和/或如何整合响应?有什么想法吗?

最佳答案

只是想在这里解决我的过程中 Unresolved 问题。我最终不需要对我的测试进行编码,因为 URL 将被直接调用,而不是通过浏览器,但在我意识到这一点之前,我已经有了一种编码方法。根据 Kaj 的建议(请参阅对我的原始问题的评论),我对字符串进行了部分编码,拆分了我需要保留未编码的任何字符(即 :/ 为此案件)。它比我认为需要的要复杂一些,但它达到了目的。

--编辑:相关代码--
这是我调用以打开与服务器的连接(使用基本身份验证)的测试方法:

private void getConnection(String target, String user, String pass) throws Exception  
{  
  URL url = new URL(target);  
  URLConnection conn = url.openConnection();  
  //Here's where basic auth kicks in  
  String creds = user + ":" + pass;  
  String encoded = new sun.misc.BASE64Encoder().encode(creds.getBytes());  
  conn.setRequestProperty("Authorization", "Basic " + encoded);  
  //This part doesn't rely on authentication  
  conn.connect();  
}  

编码(如有必要)将在传递到此方法之前完成。

关于java - 发出与 URI 的单元测试连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231116/

相关文章:

java - 如何将字符串转换为整数?

java - 将异常从 Runnable 线程抛出到调用方法中

javascript - setState 不会导致渲染 React Native

java - 没有 Runnable 方法和 Test 类应该只有一个公共(public)零参数构造函数

java - 在带有 CDT 的 eclipse 插件中使用自己的 CodeFormatter

使用 http 和其他替代技术下载 JavaFX 文件?

java - 这段 Java 代码仍然安全吗?使用 URL 类的 HTTPS 连接

ruby - 如何调试/显示使用 RestClient 发送的请求

java - 如何使用 SpringJUnit4ClassRunner 使用 RunNotifier 或 RunListener

android - 使用 ServiceTestCase 访问 JUnit 的资源