请帮我解决下面代码的JUnit测试用例

时间:2014-01-24 18:42:51

标签: java

我想知道以下program.please帮助的JUnit测试用例。我没有在这里包括主要方法。想知道代码中url()方法的JUnit测试用例。此代码用于从网站读取HTML并将其保存在本地计算机的文件中

    package Java3;

        import java.io.BufferedReader;
        import java.io.FileOutputStream;
        import java.io.IOException;
        import java.io.InputStreamReader;
        import java.io.PrintStream;
        import java.net.MalformedURLException;
        import java.net.URL;
        import java.util.logging.Level;
        import java.util.logging.Logger;


        public class Urltohtml 
        {
            private String str;
            public void url() throws IOException
            {
                try 
                {
                    FileOutputStream f=new FileOutputStream("D:/File1.txt");
                    PrintStream p=new PrintStream(f);

                    URL u=new URL("http://www.google.com");
                    BufferedReader br=new BufferedReader(new InputStreamReader(u.openStream()));
                    //str=br.readLine();
                    while((str=br.readLine())!=null)
                    {
                        System.out.println(str+"\n");
                        p.println(str);
                    }
                } 
                catch (MalformedURLException ex) 
                {
                    Logger.getLogger(Urltohtml.class.getName()).log(Level.SEVERE, null, ex);
                }

            }
        }

1 个答案:

答案 0 :(得分:2)

我会将该类重命名为UrlToHtml并编写一个JUnit测试类UrlToHtmlTest

您在测试时遇到问题的部分原因是该课程的设计和实施设计不合理:

  1. 您应该传入您要抓取的网址,而不是硬编码。
  2. 您应该将内容作为字符串或列表返回,而不是将其打印到文件中。
  3. 您可能希望抛出该异常而不是捕获它。您的日志记录并不完全“处理”特殊情况。如果他们愿意,让它冒泡并让客户记录。
  4. 您不需要该私人数据成员;返回内容。这可以让你使这个方法变得静态。
  5. 好名字很重要。我不喜欢你对班级或方法的所作所为。

    为什么要在使用库的时候写这个呢?

    以下是测试类的外观:

    public class UrlToHtmlTest {
        @Test
        public void testUrlToHtml() {
           try { 
               String testUrl = "http://www.google.com" ;
               String expected = "";
               String actual = UrlToHtml.url(testUrl);
               Assert.assertEquals(expected, actual);
           } catch (Exception e) {
               e.printStackTrace();
               Assert.fail();
           }
        }
    }