问题单元测试连接URI(Issues unit testing connection to URI)

2019-10-16 13:44发布

我的单元测试我的Java /新泽西Web服务和运行到一个有趣的测试案例。 我检查不同的URI条目的状态码,以确保不正确的URI不会破坏我的代码或任何东西。 在测试情况下,我在无效字符抛出(如!@ $#<>,等等),我的浏览器拉起一个404错误,如我所期望的,但JUnit是显示错误作为一个500错误。 这发生在情况下,我喜欢的东西扔“<134->”的情形和我尝试注入HTML代码(如“ myURI<html><p>hello</p><br></html>/restofmyURI ” )。

任何想法,为什么我会得到不同的服务器响应同一呼叫,和/或如何巩固应对?

Answer 1:

只是想在这里整装结束我的过程。 我结束了不需要编码我的测试,因为网址会被直接调用,而不是通过浏览器,但我有到位的编码方法之前,我意识到这点。 基于凯伊的建议(见我原来的问题的意见),我编码部分的字符串,分裂在我需要留下任何字符未编码(即:/对于这种情况)。 这是一个比较复杂一点比我觉得它需要的,但它达到了目的。

-编辑:相关代码-
下面是我的测试中,我打电话给打开与服务器的连接(使用基本身份验证)的方法:

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();  
}  

编码(如有必要)将被传入此方法之前完成。



Answer 2:

而不是直接编码字符串。 编码URL对象。 这应该有助于防止MalformedURLException的

 try{
     URL url = new URL("http://myurl/otherparameters/here");    
     String encodedurl = URLEncoder.encode(url.toString(),"UTF-8");     
  }
  catch(MalformedURLException mue)
  {
     System.err.println(mue); 
  }
  catch(UnsupportedEncodingException uee)
  {
     System.err.println(uee);
  }


文章来源: Issues unit testing connection to URI
标签: java http junit