2017-08-01 8 views
0

propertiesファイルのキーに対してテストする値を入力するテストケースシナリオを準備しました。すべてのキー値が対応する値で満たされている場合、メソッドはtrueを返し、そうでない場合はfalseを返します。以下はjunitのプロパティファイルを使用してパラメータをテストする方法

私のコードです:

package mypackTest; 

import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Arrays; 
import java.util.Collection; 
import java.util.List; 
import java.util.Properties; 
import static org.hamcrest.CoreMatchers.is; 
import org.junit.BeforeClass; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized; 
import org.junit.runners.Parameterized.Parameters; 
import static org.junit.Assert.assertThat; 

@RunWith(Parameterized.class) 
public class Test123 { 

    static Properties p = null; 
    private boolean expected; 

    @Parameters 
    public static List<String[]> data() 
    { 
     String[][] data = new String[][] { { "D:\\personal\\config.properties" }}; 
    return Arrays.asList(data); 
    } 


    @BeforeClass 
    public static void setup() 
    { 
      p = new Properties(); 
     try 
     { 
      //load a properties file 
      p.load(new FileReader(new File("D:\\personal\\config.properties"))); 
     } 
     catch (IOException ex) 
     { 
     ex.printStackTrace(); 
     } 
} 



    @Test 
    public void do_test() { 

     assertThat(TestThis.letstest(p.getProperty("abc1"), p.getProperty("abc2")), is(expected)); 
    } 
} 

私は時にテストしたいクラス:

package mypackTest; 

public class TestThis { 

    public static boolean letstest(String abc1,String abc2){ 
     if(abc1.equals("xyz1")&& abc2.equals("xyz2")){ 
      return true; 
     } 
     return false; 
    } 
} 

プロパティは

abc1=xyz1 
abc2=xyz2 
ファイル

テストランナークラス

package mypackTest; 

import java.util.Enumeration; 

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

import junit.framework.TestFailure; 
import junit.framework.TestResult; 
import junit.framework.TestSuite; 

public class TestRunner { 
    public static void main(String[] args) { 

       Result result = JUnitCore.runClasses(CalculatorTest.class); 

       for (Failure failure : result.getFailures()) { 
       System.out.println(failure.toString()); 
       } 

       System.out.println(result.wasSuccessful()); 
    } 
} 

私は、出力の下に取得しています

OUTPUT

do_test0:引数の数が間違っ

答えて

1

このコードにはさまざまな問題があります。まず第一に:

private boolean expected; 

あなたは、そのフィールドを宣言している - しかし、あなたはそれに値を割り当てることはありません。したがって、falseに初期化され、falseのままです。だから、それが何かにそれを比較することを期待しないでくださいtrueはうまくいくでしょう。

それ以外では:Parametrizedは使用していません任意センス。この特殊ランナーのアイデアは、@Parametersの "物"には複数のの値が含まれています。テストは各エントリのループで呼び出されます。 シングルのファイル名があります。これは、「トラックを買って1つのスーツケースを輸送する」のようなものです。意味:そこにキー/値のエントリのリストを指定します。 (たとえば)プロパティファイルにこれらのすべてのエントリが含まれていることを確認します。またはそのようなもの。

実際の答えは次のとおりです。ステップバイステップで基本について学びます。たとえば、の静的なの使用は、という静的なが実際に何であるか、およびいつ使用するのかを理解していないことを意味しています。そしては、のJUnit(通常のJUnit)のチュートリアルに従います。それを正しく使う方法を考えたら、@Parametrizedに関するチュートリアルを読んでください。

つまり、基本的な理解が不足している場合は、「試行錯誤」を適用しないでください。この戦略は、十分な経験がある場合には、常にエラーになります。