当前位置: 首页 > 知识库问答 >
问题:

使用自定义对象的参数化测试

赵才俊
2023-03-14
void add() {
    student5 =  new Student("student5", LocalDate.of(2000,5,12), "none");
    studentSet2.add(student5);
    assertAll(
            ()->assertThat(studentSet2).contains(student5),
            ()->assertThat(studentSet2).hasSize(1),
            ()->assertThat(studentSet2.iterator().next()).isEqualTo(student5),
            ()->assertThat(studentSet2.toArray(new Student[1])).containsOnly(student5)
    );

共有1个答案

谢裕
2023-03-14

您需要创建大量的合成案例(或者从某个地方读取…),例如

static Stream<Arguments> testAddToAListSource() {
    final List<String> baseData = List.of("one", "two", "three");
    
    // construct cases using a base list and adding null or a new element
    return IntStream.range(0, baseData.size() + 1)
            .mapToObj(n -> baseData.stream().limit(n).collect(toList()))
            .flatMap(xs -> Stream.of(null, "extra", "superExtra")
                .map(x -> arguments(new ArrayList<>(xs), x)));
}

此方法创建字符串列表和要添加的新字符串的对。

假设您希望检查以下不变量,以验证此元素是否正确添加到列表中

@ParameterizedTest
@MethodSource("testAddToAListSource")
void testAddToAList(List<String> caseList, String newElement) {

    // count elements
    final long currentSize = caseList.size();

    // count how many times the element is in list
    final long currentTimes = caseList.stream().filter(e -> Objects.equals(e, newElement)).count();

    // add
    caseList.add(newElement);

    // count elements
    final long newSize = caseList.size();

    // count how many times the element is in list
    final long newTimes = caseList.stream().filter(e -> Objects.equals(e, newElement)).count();

    assertEquals(newSize, currentSize + 1);
    assertEquals(newTimes, currentTimes + 1);
}
@ParameterizedTest
@MethodSource("testAdd")
void add(StudentSet studentSet2, Student student5) {
    ...
static Stream<Arguments> testAdd() {
    ...
 类似资料:
  • 本文向大家介绍Swift使用参数自定义初始化,包括了Swift使用参数自定义初始化的使用技巧和注意事项,需要的朋友参考一下 示例 请注意,您不能省略参数标签: 为了允许省略参数标签,请使用下划线_作为标签: 如果参数标签使用一个或多个属性共享名称,请使用self显式设置属性值:            

  • 当我试图在Github上使用自己的指南测试tenstorFlow目标检测API时发生了一个错误我在运行他们指南中提到的测试脚本时遇到了以下错误 python对象检测/构建器/模型构建器测试。py/home/appu/anaconda3/envs/ml/lib/python3。6/importlib/_引导。py:219:RuntimeWarning:compiletime模块“tensorflow

  • 问题内容: 说我的课很简单 我希望将此类s 的集合存储在People类的属性中,该属性是类型为Person的数组 也许我做到这一点如下 问题:请问我如何检查people.list是否包含实例alex? 我很想尝试的简单尝试 称一个错误 问题答案: 有两个功能: 编译器在抱怨是因为编译器知道不是,因此需要一个谓词,但不是谓词。 如果阵列中的人员是(不是),则可以使用: 由于它们不相等,因此可以将第二

  • 问题内容: 确定,所以我编辑了问题,因为它不够清楚。 编辑2 :更新了JSON文件。 我在Android应用程序中使用GSON,我需要解析来自服务器的JSON文件,这些文件有点太复杂了。我不想让我的对象结构太沉重,所以我想简化内容: 所以我的对象的结构将不是JSON文件的结构。 例如,如果在JSON中,我有以下内容: 我不想保留我当前的对象结构,即一个对象,其中包含一个和一个“总计”。但是我只想将

  • 我想以 json 格式序列化一个自定义对象,其中 entryData 是我的域对象的列表。像这样: 下面是我在一次尝试中为获得json输出所做的工作: 但结果是entryData评估为字符串,引号转义: 我也尝试过这样做: 但是我得到了这个例外:

  • 我试图创建一个音频捕获活动,所以我从android文档中复制了这个类,如下所示 在我的xml页面中,我试图创建一个id为麦克风的RecordButton。类似这样的东西 现在,当我尝试运行该应用程序时,会出现以下输出