如何使用参数正确单元测试字符串

时间:2016-02-09 15:18:20

标签: android unit-testing

我有一个方法返回带参数的字符串(" toto%s"," tata%s"等)我想测试返回的字符串而不关心%s替换。

示例:

String testedString = RuntimeEnvironment.application.getString(R.string.my_string_with_parameter);
assertEquals(testedString, returnedString);

失败原因是:

  

预期:STARTS IN%s

     

实际:在321天内开始

但我无法在测试中知道%s被" 321天"替换。

有没有办法正确测试?

2 个答案:

答案 0 :(得分:1)

考虑

assertThat(testedString, startsWith("STARTS IN"));

测试结果的固定部分。

为了对此进行全面测试,您需要确保测试中的代码返回插入的时间值的固定值。 我不熟悉执行的代码,但可能有一些方法可以控制和/或模拟这种行为。

答案 1 :(得分:0)

这样的事情怎么样?

    public void stringIsCorrect(String desiredSubstring, String generatedString){
        assertTrue(generatedString.indexOf(desiredString) != -1);
    }

如果您需要它更灵活,可以用List替换第一个参数并循环遍历它们,以及使用Apache StringUtils检查子字符串是否显示正确的次数。