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;