当前位置: 首页 > 面试题库 >

具有动态测试数量的JUnit测试

怀德馨
2023-03-14
问题内容

在我们的项目中,我有几个JUnit测试,例如从目录中获取每个文件并对其进行测试。如果我在中实现了一种testEveryFileInDirectory方法,那么TestCase它只会显示为可能失败或成功的一项测试。但是我对每个文件的结果都很感兴趣。如何编写一个TestCase/
TestSuite使得每个文件显示为单独的测试,例如在Eclipse的图形TestRunner中?(为每个文件编写显式测试方法不是一种选择。)


问题答案:

看看JUnit 4 中的 参数化测试

实际上,我几天前就这样做了。我会尽力解释…

首先,正常构建测试类,就像在一个输入文件中进行测试一样。用以下方式装饰您的课程:

@RunWith(Parameterized.class)

构建一个构造函数,该构造函数接受在每次测试调用中都会更改的输入(在这种情况下,它可能是文件本身)

然后,构建一个静态方法,该方法将返回一个Collection数组。集合中的每个数组都将包含类构造函数的输入参数,例如文件。用以下方法装饰此方法:

@Parameters

这是一个示例类。

@RunWith(Parameterized.class)
public class ParameterizedTest {

    private File file;

    public ParameterizedTest(File file) {
        this.file = file;
    }

    @Test
    public void test1() throws Exception {  }

    @Test
    public void test2() throws Exception {  }

    @Parameters
    public static Collection<Object[]> data() {
        // load the files as you want
        Object[] fileArg1 = new Object[] { new File("path1") };
        Object[] fileArg2 = new Object[] { new File("path2") };

        Collection<Object[]> data = new ArrayList<Object[]>();
        data.add(fileArg1);
        data.add(fileArg2);
        return data;
    }
}

还要检查这个例子



 类似资料:
  • 参数化测试可以将不同的数据输入到测试中。不过,我创建了一个示例计算器,希望为其创建参数化测试。但是,我发现您只能为单个测试创建一组参数化数据。 我已经创建了参数化测试,用于添加两个数字,得到预期的结果。由于预期结果会有所不同,因此该数据将不适用于减法运算。 有没有可能为每个加、减、乘、除测试提供参数化数据? 非常感谢您的建议,

  • 问题内容: 我有一系列要在电子商务平台上测试的商店,并且每个商店都具有要针对其自动化测试的一系列属性。是否可以有一个数据提供程序在整个测试套件中提供数据,而不仅仅是在TestNG中提供测试?我试图不使用testNG.xml文件作为机制,因为这些属性直接来自数据库调用。 我需要自动执行以下操作: @Test在当前数据集行中使用用户名和密码登录。 @Test验证StoreName和items-stor

  • 我正在尝试为我的角应用程序编写一个e2e测试,特别是一个具有3个选择输入的表单。测试需要涉及从这些选择中随机选择选项。第一个选择已填充了数据,但其他 2 个选择在选择前一个选项时异步填充,因此它们彼此依赖。 选择输入还使用 ng 禁用,并且仅当有根据其 ng 重复表达式可用的选项时才启用。 我在测试中使用了页面对象方法,因此我尝试制作一些实用函数来实现测试中需要的随机选择行为: 页面对象: 鉴于从

  • 我正在为Junit编写测试,以测试我编写的删除函数: 此方法适用于同时具有前后节点的双链接列表。 问题是:我们的大学将针对我们编写的测试运行错误代码,以确定我们是否编写了足够的测试来捕获错误代码和异常。 我知道他们将运行的两个测试,但不知道错误的含义。 > 失败:缺少逻辑 故障:缺少NextNodeRepairLogic 这是我没有考虑的两个测试,因为我无法理解这些错误的含义。有人知道这些错误可能

  • 我有一个testng测试方法和一个数据提供者。我想让测试用例对具有要测试的此功能的多个客户端可重用。唯一的问题是该功能在不同的客户端上的工作方式不同,即我必须为不同的客户端提供不同数量的相同功能的输入,并且最终结果对所有人来说都是相同的。 目前,我正在通过为具有此功能的多个客户端使用数据提供程序定义多个测试方法来执行此操作。 示例:- 我开发了一个通用的测试逻辑来处理不同的参数集。我无法做的是对不

  • 更新 根据新的构建系统,层次结构应该如下所示: 我还尝试扩展AndroidTestCase,并在两个父类中都收到了这个错误: 我尝试用这个解决方案解决这个错误,但是项目结构模块依赖项部分没有Android 1.6平台。所以,基本上,我不知道如何在类路径中将junit依赖项移到Android依赖项之上。