您好我正在使用Eclipse Luna,我尝试用Junit编写单元测试。我想给一个方法一个值(null),它应该抛出一个异常。 Method是一个构造函数,类有一个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;
}
}
答案 0 :(得分:0)
执行new
时会调用构造函数,因此在此行中:
WebUntisProvider prov = new WebUntisProvider(url);
使用new
创建的对象始终为!= null
。
您应该删除以下行:
assertNotNull("object was null" , prov.WebUntisProvider(url) );
答案 1 :(得分:0)
这是错误的。您无法在已构造的对象上调用构造函数:
for tblName in sqlContext.tables().filter("tableName LIKE 'job%'").collect():
sqlContext.sql("DROP TABLE IF EXISTS " + tblName)
具体来说:prov.WebUntisProvider(url)
我甚至惊讶于编译。除了实例化
之外,您不需要做任何其他事情assertNotNull("object was null" , prov.WebUntisProvider(url) );
并对此进行断言。