如何在Java中的Junit测试中调用构造函数?

如何在Java中的Junit测试中调用构造函数?,java,junit,Java,Junit,您好,我正在使用EclipseLuna,我试图用Junit编写一个单元测试。我想给一个方法一个值(null),它应该抛出一个异常。该方法是一个构造函数,该类有一个main。我做错了什么。通常我可以调用这样的方法Package.class.MethodName(参数) 测试等级: public class WebUntisProviderTest { public static URL url = null; @Test(expected = IllegalArgumentEx

您好,我正在使用EclipseLuna,我试图用Junit编写一个单元测试。我想给一个方法一个值(null),它应该抛出一个异常。该方法是一个构造函数,该类有一个main。我做错了什么。通常我可以调用这样的方法Package.class.MethodName(参数)

测试等级:

public class WebUntisProviderTest {

    public static URL url = null;

    @Test(expected = IllegalArgumentException.class)
    public void WebUntisProvider() {
        final URL url = null;
        WebUntisProvider prov = new WebUntisProvider(url);

         assertNotNull("object was null" , prov.WebUntisProvider(url) );
         fail( "url must not be null.");
     }
    }
被测类别:

public class WebUntisProvider {

    private URL url;

    public static void main(String[] args) throws MalformedURLException {
        URL test = new URL("HTTP://google.com");
        System.out.println(test.getProtocol());

    }
    public WebUntisProvider(URL url) {
        if (url == null)
            throw new IllegalArgumentException("url must not be null.");
        if (!url.getProtocol().equals("http") &&    !url.getProtocol().equals("https"))
            throw new IllegalArgumentException("url protocol must be http or https."); 

        this.url = url;
     }
 }

当您执行
new
时,将调用构造函数,因此在此行中:

   WebUntisProvider prov = new WebUntisProvider(url);
使用
新建创建的对象始终是
!=空

您应该删除以下行:

assertNotNull("object was null" , prov.WebUntisProvider(url) );

这是错误的。无法对已构造的对象调用构造函数:

assertNotNull("object was null" , prov.WebUntisProvider(url) );
特别是:prov.WebUntisProvider(url)

我很惊讶,即使是编译。除了实例化,您不需要做更多的事情

WebUntisProvider prob= WebUntisProvider(url);

并对其运行您的断言。

这是新的测试@测试(预期为IllegalArgumentException.class,超时为10)公共无效WebUntisProvider(){final URL URL=null;WebUntisProvider prov=new WebUntisProvider(URL);assertNotNull(prov);