2016-09-07 9 views
2

JUnitでの最初の日です。私はパラメータでテストしようとします。JavaクラスでJunitParamsRunnerをインポートする方法

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized; 

import static org.junit.Assert.assertEquals; 

@RunWith(JUnitParamsRunner.class) 
public class MoneyParameterizedTest { 
    private static final Object[] getMoney() { 
     return new Object[] { 
       new Object[] {10, "USD"}, 
       new Object[] {20, "EUR"} 
     }; 
    } 
    @Test 
    @Parameterized.Parameters(method = "getMoney") 
    public void constructorShouldSetAmountAndCurrency(
      int amount, String currency) { 
     Money money = new Money(amount, currency); 
     assertEquals(amount, money.getAmount()); 
     assertEquals(currency, money.getCurrency()); 
    } 
} 

IntelliJのは、と教えてくれました::シンボルJUnitParamsRunner及び方法を解決することはできません私は、コードを持っています。輸入に問題がありますか?私がテストしているクラスは同じパッケージに入っています。 Parametrized.Parametersで

----- EDIT -------

私はParameterized.classにJunitParamsrunner.classを変更すると、それは大丈夫ですが、シンボルの問題点 'メソッド' は同じです。

答えて

2

JUnitParamslicensed Apache 2.0)は別のライブラリです。つまり、JUnit自体には付属していません。これはまた、プロジェクトのクラスパスにあることを確認する必要があることを意味します。 maven(または類似のもの)を使用しているのなら、それはむしろ簡単です.pomに依存するものとして追加するだけで、IJが変更を取得したことを確認する必要があります(ポップアップが右上隅):

そうでない
<dependency> 
    <groupId>pl.pragmatists</groupId> 
    <artifactId>JUnitParams</artifactId> 
    <version>1.0.5</version> 
    <scope>test</scope> 
</dependency> 

download it yourselfDownload (JAR)リンクをクリック)し、libraryそれCLASSPATHに。

Parameterizedの概念は似ていますが、JUnitParamsと同じものではありません。後者は、パラメータ化されたJUnitテストの作成方法を簡素化し、改善することを目的としています。

P.S:さらに柔軟JUnitParams超えるようだが、それは、ライセンスの制限により異なりLGPL 3.0の下でリリースさZohhakと呼ばれる別のライブラリがあります。ここで

+0

あなたはそれがMavenと「クラシック」のJavaプロジェクトのために同じダウンロードである私に言うことができますか?同じJARですか? –

+0

@ J.Carrerそれは同じ瓶ですが、違いはmaven(gradleなど)は自動的にものを行い、あなたの人生をより簡単にし、依存関係やビルドなどのためです。 – Morfic

0

は動作するはずの例です:

import junitparams.JUnitParamsRunner; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
//import org.junit.runners.Parameterized.Parameters; 
import static org.junit.Assert.assertEquals; 
import junitparams.Parameters; 

@RunWith(JUnitParamsRunner.class) 
public class MoneyTest { 

    private final static int VALID_AMOUNT = 5; 
    private final static String VALID_CURRENCY = "USD"; 

    private static final Object[] getInvalidAmount() { 
     return new Integer[][] {{-12387}, {-5}, {-1}}; 
    } 

    @Test(expected = IllegalArgumentException.class) 
    @Parameters(method = "getInvalidAmount") 
    public void constructorShouldThrowIAEForInvalidAmount(int invalidAmount){ 
     new Money(invalidAmount, VALID_CURRENCY); 
    } 

    private static final Object[] getInvalidCurrency(){ 
     return new String[][]{{null}, {""}}; 
    } 

    @Test(expected = IllegalArgumentException.class) 
    @Parameters(method = "getInvalidCurrency") 
    public void constructorShouldThrowIAEForInvalidCurrency(String invalidCurrency){ 
     new Money(VALID_AMOUNT, invalidCurrency); 
    } 

    private static final Object[] getMoney() { 
     return new Object[] { 
       new Object[] {10, "USD"}, 
       new Object[] {20, "EUR"} 
     }; 
    } 
    @Test 
    @Parameters(method = "getMoney") 
    public void constructorShouldSetAmountAndCurrency(
      int amount, String currency) { 
     Money money = new Money(amount, currency); 
     assertEquals(amount, money.getAmount()); 
     assertEquals(currency, money.getCurrency()); 
    } 
} 
関連する問題