gpt4 book ai didi

java - 无法使用 JUnit 和 Eclipse 运行单个单元测试以进行数据驱动测试

转载 作者:行者123 更新时间:2023-12-01 05:47:59 24 4
gpt4 key购买 nike

为了清楚起见,我已将问题从所有不必要的复杂性中剥离出来并附加了两个文件。实际上,我想从数据库加载测试所需的输入。在示例中,我在 Suites 类中使用了 suites 映射,而不是查询的结果。我还在 TestOverride 的 run 方法中进行了相当复杂的比较,而不是简单的比较。基本上,这就是我如何以动态方式解决使用数据库(套件映射)中的测试创建测试套件的问题。另外,当我用 eclipse 运行它时,我可以看到测试名称,这一点很重要。

如果您运行 Suites(只需右键单击它并在 Eclipse 上运行 JUnit),它就可以正常工作。唯一通过的测试是 test4。但是,我希望能够使用这种类型的构造运行单个测试(单个套件也很好,但我会对单个测试感到满意)。换句话说,运行所有套件后,我想转到 JUnit 窗口,右键单击单个测试并运行它。如果我这样做,那是行不通的。我不知何故认为测试在第一次运行后存储在某个地方,并且我可以稍后使用它们。

我正在使用 eclipse 3.6 和 JUnit 4.0

有什么想法吗?我不对参数化类使用注释,因为所有内容都必须在编译前已知(并且我从数据库获取输入)。我还在论坛中看到,使用这种方法重命名测试用例是一个很大的问题。

import java.util.HashMap;
import java.util.Map;

import junit.framework.Test;
import junit.framework.TestSuite;

public class Suites {

public static Test suite() {
Map<String, String[]> suites = new HashMap<String, String[]>();
suites.put("suite1", new String[]{"test1", "test2"});
suites.put("suite2", new String[]{"test3", "test4"});

TestSuite all = new TestSuite("All Suites");
for(Map.Entry<String, String[]> entry : suites.entrySet()) {
TestSuite suite = new TestSuite(entry.getKey());
for(String testName : entry.getValue()) {
suite.addTest(
new TestOverride(
testName
)
);
}
all.addTest(suite);
}
return all;
}
}

import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import junit.framework.TestResult;

public class TestOverride extends TestCase {

private String name;

public TestOverride(
String name)
{
this.name = name;
}

@Override
public void run(TestResult result) {
result.startTest(this);
if (this.name.equals("test4")) {
result.endTest(this);
} else {
result.addFailure(this, new AssertionFailedError("Not test4"));
}
}

@Override
public String getName() {
return name;
}
}

最佳答案

我认为不可能实现你想要的。据我所知(和经验),只有“真正的”junit 方法(即现有类中的实际方法)可以从 junit 窗口执行(这在使用参数化测试时很容易重现。特定的测试无法运行这里也再次)。

也许您应该尝试生成用于测试的 java 代码(并编译它)。

关于java - 无法使用 JUnit 和 Eclipse 运行单个单元测试以进行数据驱动测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5459603/

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