java - 字符串的断言失败消息包含子字符串

标签 java string junit functional-testing assertions

<分区>

最近我在文本生成软件上对文本输出做了很多功能测试,发现自己写了很多

assertTrue(actualString.contains(wantedString));

但是,失败时的消息是非描述性的,例如

Expected [true], but was [false]

另一种方法是将自定义失败消息包含为

String failMsg = String.format("Wanted string to contain: %s, Actual string: %s", wantedString, actualString);
assertTrue(failMsg, actualString.contains(wantedString));

但是一直手动操作感觉有点乏味。 有没有更好的办法?

最佳答案

使用 hamcrest Matcher containsString()

// Hamcrest assertion
assertThat(person.getName(), containsString("myName"));

// Error Message
java.lang.AssertionError:
Expected: a string containing "myName"
     got: "some other name"

您可以选择添加更详细的错误消息。

// Hamcrest assertion with custom error message
assertThat("my error message", person.getName(), containsString("myName"));

// Error Message
java.lang.AssertionError: my error message
Expected: a string containing "myName"
     got: "some other name"

关于java - 字符串的断言失败消息包含子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711180/

相关文章:

c - C语言中如何检查字符串

string - 如何检测字符串是否为空字符?

java - Junit 之前/之后和设置/拆卸

java - JSch 算法协商仅在单元测试中失败

java - ConcurrentHashMap 实现和限制

java - 在 JavaFX 对话框中获取两个以上的输入

java - 如何在 Android 中从/向 Dropbox 导出导入 SQLite 数据库?

java - 如何在 Java 中的二维数组上的循环内创建对象

c - snprintf 和 strncat 的执行速度如何比较?

java - Selenium 测试设置