2016-07-10 2 views
-2

Hallo ich benutze Eclipse Luna und ich habe versucht, einen Unitest mit Junit zu schreiben. Ich möchte einer Methode einen Wert (null) geben und eine Ausnahme auslösen. Die Methode ist ein Konstruktor und die Klasse hat eine Hauptkomponente. Was mache ich falsch. Normalerweise kann ich rufen eine Methode wie diese Package.class.MethodName (Parameter Parameter)So rufen Sie einen Konstruktor in einem Junit-Test in Java auf?

Prüfklasse:

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."); 
    } 
    } 

Die getestete Klasse:

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; 
    } 
} 

Antwort

0

Konstruktor wird aufgerufen, wenn Sie new tun, Also in dieser Zeile:

WebUntisProvider prov = new WebUntisProvider(url); 

Objekt erstellt mit new ist immer != null.

Sie unter der Zeile entfernen sollte:

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

Das ist falsch. Sie können den Konstruktor auf dem bereits errichteten Objekt nicht nennen:

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

Im Einzelnen: prov.WebUntisProvider (url)

Ich bin überrascht, dass selbst kompiliert. Sie müssen nichts weiter tun, als

zu instanziieren und Ihre Behauptungen dagegen auszuführen.

+0

Vielen Dank, diese Zeile zu entfernen funktioniert. – Cherub

+0

Das ist der neue Test. @Test (expected = IllegalArgumentException.class, timeout = 10) \t public void WebUntisProvider() { \t \t final URL url = null; \t WebUntisProvider prov = neuer WebUntisProvider (url); \t \t AssertNotNull (Prov); – Cherub

Verwandte Themen