Hamcrest 1.3:动态构建匹配器

时间:2018-06-23 15:25:05

标签: java hamcrest

在这个问题的范围内,我不想遍历“断言” 。 我的目标是动态构建匹配器,而示例代码无法反映我正在尝试做的全部工作。

我正在尝试构建可在不同环境中运行的测试

我的测试需要使用参数来构建,并检查匹配器中未知数量的元素。

请参见下面的代码:如何动态构建匹配器?

我尚未找到任何解决方案。 Hamcrest版本是1.3,我希望坚持使用它,因为该项目使用spring-boot的依赖管理(BOM)

请参阅代码中的“帮助”部分

package com.test;

import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.MatcherAssert.assertThat;

import java.util.Arrays;
import java.util.List;

import org.hamcrest.Matcher;
import org.junit.Test;

public class SomeTest {

    private String anArray[] = { "a1", "b2", "c3", "d4" };
    private List<String> aList = Arrays.asList(anArray);

    @Test
    public void doBothTests() {

        testStaticValues();

        String mustHaveItemsContainingString[] = { "a", "2", "c" };

        testDynamicValues(mustHaveItemsContainingString);

    }

    private void testStaticValues() {
        assertThat(aList, 
                hasItems(
                        containsString("a"),
                        containsString("2"),
                        containsString("c"))
                );

    }

    private void testDynamicValues(String[] mustHaveItemsContainingString) {
        Matcher<Iterable<String>> hasItems = null;

        // HELP!!!!
        // hasItems = new Matcher<Iterable<String>>;
        for (String testString : mustHaveItemsContainingString) {
            Matcher<String> matcher = containsString(testString);
            // HELP!!!
            // hasItems . append(matcher)
        }

        assertThat(aList, hasItems);

    }

}

0 个答案:

没有答案
相关问题