簡體   English   中英

需要編寫JUnit測試用例

[英]Need to write JUnit Test case

我是一個更新鮮的java開發人員。 但是我對編寫Junit測試用例並不了解。 我很快就要上工作了。 他們希望我為此編寫一個程序

  1. 要從任何網站上閱讀HTML,請說“http://www.google.com”(您可以使用Java中內置API的任何API,如URLConnection)
  2. 在控制台上打印上面url中的HTML並將其保存到本地計算機中的文件(web-content.txt)。
  3. 上述程序的JUnit測試用例。

我已完成前兩個步驟,如下所示:

import java.io.*;
import java.net.*;

public class JavaSourceViewer{
  public static void main (String[] args) throws IOException{
    System.out.print("Enter url of local for viewing html source code: ");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String url = br.readLine();
    try {
      URL u = new URL(url);
      HttpURLConnection uc = (HttpURLConnection) u.openConnection();
      int code = uc.getResponseCode();
      String response = uc.getResponseMessage();
      System.out.println("HTTP/1.x " + code + " " + response);

      InputStream in = new BufferedInputStream(uc.getInputStream());
      Reader r = new InputStreamReader(in);
      int c;
      FileOutputStream fout=new FileOutputStream("D://web-content.txt");
      while((c = r.read()) != -1){
        System.out.print((char)c);
        fout.write(c);
      }
      fout.close();
    } catch(MalformedURLException ex) {
      System.err.println(url + " is not a valid URL.");
    } catch (IOException ie) {
      System.out.println("Input/Output Error: " + ie.getMessage());
    }
  }
}    

現在我需要第3步的幫助。

你需要提取一個像這樣的方法

package abc.def;

import java.io.*;
import java.net.*;

public class JavaSourceViewer {
    public static void main(String[] args) throws IOException {
        System.out.print("Enter url of local for viewing html source code: ");
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));
        String url = br.readLine();
        try {
            FileOutputStream fout = new FileOutputStream("D://web-content.txt");
            writeURL2Stream(url, fout);
            fout.close();
        } catch (MalformedURLException ex) {
            System.err.println(url + " is not a valid URL.");
        } catch (IOException ie) {
            System.out.println("Input/Output Error: " + ie.getMessage());
        }
    }

    private static void writeURL2Stream(String url, OutputStream fout)
            throws MalformedURLException, IOException {
        URL u = new URL(url);
        HttpURLConnection uc = (HttpURLConnection) u.openConnection();
        int code = uc.getResponseCode();
        String response = uc.getResponseMessage();
        System.out.println("HTTP/1.x " + code + " " + response);

        InputStream in = new BufferedInputStream(uc.getInputStream());
        Reader r = new InputStreamReader(in);
        int c;

        while ((c = r.read()) != -1) {
            System.out.print((char) c);
            fout.write(c);
        }
    }
}

好的,現在您可以編寫JUnit-Test了。

  package abc.def;

  import java.io.ByteArrayOutputStream;
  import java.io.IOException;
  import java.net.MalformedURLException;

  import org.junit.Test;

  import junit.framework.TestCase;

  public class MainTestCase extends TestCase {
    @Test
    public static void test() throws MalformedURLException, IOException{
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        JavaSourceViewer.writeURL2Stream("http://www.google.de", baos);
        assertTrue(baos.toString().contains("google"));

    }
  }
  • 首先將代碼從main方法移動到JavaSourceViewer中的其他方法。
  • 第二,讓這些方法返回你可以測試的東西。 例如輸出文件或Reader的文件名。

然后為單元測試創​​建一個類

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

public class JavaSourceViewerTest {

   @Test
   public void testJavaSourceViewer() {
      String url = "...";
      JavaSourceViewer jsv = new JavaSourceViewer();
      // call you methods here to parse the site
      jsv.xxxMethod(...)
      ....
      // call you checks here like: 
      // <file name to save to output data from your code, actual filename>  - e.g.
      assertEquals(jsv.getOutputFile(), "D://web-content.txt");
      ....
   }

}

要執行Junit,請使用IDE(如eclipse)或將junit.jar文件放在類路徑和控制台中:

java org.junit.runner.JUnitCore JavaSourceViewerTest

你的步驟不對。 以這種方式做這肯定會有所幫助,3,然后是1,然后2.以這種方式這樣做會迫使你思考功能和單位。 結果代碼是可測試的,沒有做任何特殊的事情。 除了為您提供安全網之外,首先測試還會指導您的系統設計。

PS 切勿在測試前嘗試編寫代碼。 正如你所看到的那樣, 它並不是很自然,也不是很有價值

現在,要測試第一個單元,您可以將string (來自google.comhtml )與一些現有string 但是,如果谷歌改變它的頁面,那個測試案例就會破裂。 其他方式,只是檢查標題中的HTTP代碼,如果是200,你沒事。 只是一個想法。

對於第二個,您可以通過讀取文件將您從網頁讀取的字符串與您寫入文件的string進行比較。

        String str = "";
        URL oracle = new URL("http://www.google.com/");
        BufferedReader in = new BufferedReader(
        new InputStreamReader(oracle.openStream()));
        File file = new File("C:/Users/rohit/Desktop/rr1.txt");
        String inputLine;
        FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
        BufferedWriter bw = new BufferedWriter(fw); 
        while ((inputLine = in.readLine()) != null) { 
        System.out.println(inputLine); 
        bw.write(inputLine); 
        } 

        bw.close(); 
        in.close(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM