Java 如何使用junit中的属性文件测试参数

Java 如何使用junit中的属性文件测试参数,java,junit,Java,Junit,我正在准备一个测试用例场景,在这个场景中,我将要测试的值与它们的键放在properties文件中。我希望如果所有键值都满足其相应的值,那么该方法应该返回true,否则返回false 下面是我的代码: package mypackTest; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Arrays; import java.util.Collection;

我正在准备一个测试用例场景,在这个场景中,我将要测试的值与它们的键放在
properties
文件中。我希望如果所有键值都满足其相应的值,那么该方法应该返回true,否则返回false

下面是我的代码:

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));
    }
}
属性文件

TestRunner类

我的产量越来越低

输出

do_test0:参数数目错误


false

此代码存在各种问题。首先:

private boolean expected;
您正在声明该字段,但从未为其赋值。因此,它被初始化为
false
,并保持
false
。因此,不要期望将它与
真实的东西进行比较会奏效

但除此之外:您使用参数化的
的方式没有任何意义。这个特殊运行程序的思想是:@Parameters“thing”包含多个值;您的测试在每个条目的循环中被调用。有一个单一的文件名-这就像“购买一辆卡车,然后运输一个行李箱”。含义:您更希望在此处指定键/值项列表;然后(例如)确保属性文件包含所有这些条目。或者类似的

因此,真正的答案是:退后一步,学习基础知识。例如,您使用的static也意味着您不了解什么是static以及何时使用它。然后遵循JUnit(普通JUnit)教程。当你知道如何正确使用它时,请阅读一篇关于@Parameterized的教程

换句话说:当你缺乏基本的理解时,不要采用“试错法”。这种策略只有在你有足够的经验,不总是错误立即为任何你尝试

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());
    }
}
private boolean expected;