2016-07-10 9 views
-2

こんにちは私はEclipse Lunaを使用しています.Junitでunittestを作成しようとしました。私はメソッドに値(null)を与えたいので、例外がスローされるはずです。メソッドはコンストラクタであり、クラスにはメインがあります。私は間違って何をしていますか?通常、私はこのPackage.class.MethodNameようなメソッド(パラメータパラメータ)JavaのJunitテストでコンストラクタを呼び出す方法は?

Testクラスを呼び出すことができます。

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

テストクラス:あなたがnewを行う際

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

コンストラクタが呼び出され、そのためこの行には:

WebUntisProvider prov = new WebUntisProvider(url); 

で作成されたオブジェクトは常に!= nullです。

あなたは線の下に削除する必要があります。

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

は、これは間違っています。あなたは既に構築されたオブジェクトにコンストラクタを呼び出すことはできません。

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

:prov.WebUntisProvider(URL)

私もコンパイルされることを驚いています。

WebUntisProvider prob= WebUntisProvider(url); 

以上のことを行う必要はありません。それに対してアサーションを実行してください。

+0

ありがとうございます。この行を削除していただきありがとうございます。 – Cherub

+0

新しいテストです。 @Test(期待= IllegalArgumentException.class、タイムアウト= 10) \t公共ボイドWebUntisProvider(){ \t \t最終的なURLのURL = NULL; \t WebUntisProvider prov =新しいWebUntisProvider(URL)。 \t \t assertNotNull(prov); – Cherub

関連する問題