gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:26:39 26 4
gpt4 key购买 nike

我正在准备一个测试用例场景,其中我将要根据 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));
}
}

我想要测试的类:

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

TestRunner 类

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

我的输出低于

输出

do_test0:参数数量错误

最佳答案

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

private boolean expected;

您正在声明该字段 - 但您从未为其分配值。因此它被初始化为 false 并保持 false。因此,不要指望将其与true进行比较会成功。

但除此之外:您使用参数化的方式没有任何意义。这个特殊运行器的想法是:@Parameters“事物”包含多个值;并且您的测试将在每个条目的循环中调用。那里有一个单一文件名 - 这就像“购买一辆卡车然后运输一个手提箱”。含义:您宁愿在那里指定键/值条目列表;然后(例如)确保属性文件包含所有这些条目。或类似的东西。

所以真正的答案是:退后一步,了解基础知识。例如,您使用static也意味着您不了解static实际上是什么以及何时使用它。然后遵循 JUnit 教程(普通 JUnit)。当您弄清楚如何正确使用它时,请阅读有关 @Parametrized 的教程。

换句话说:当你缺乏基本的理解时,不要应用“反复试验”。此策略在您有足够的经验且不会总是在尝试任何操作时立即出错时才有效。

关于java - 如何使用junit中的属性文件测试参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45432287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com