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