【问题标题】:Class name has to be before method, must be MatcherAssert.assertThat() and not just assertThat()?类名必须在方法之前,必须是 MatcherAssert.assertThat() 而不仅仅是 assertThat()?
【发布时间】:2018-08-28 21:16:53
【问题描述】:

我正在使用 hamcrest 匹配器进行测试。为什么一定要写呢

MatcherAssert.assertThat(a, Is.is(b));

不仅如此?

assertThat(a, is(b));

当我尝试使用后者时,我的程序出错了。我真的希望能够使用后者,因为我需要让不知道如何编码的人能够阅读此代码。

【问题讨论】:

  • 阅读静态导入以及更一般的静态方法

标签: java matcher assertion hamcrest


【解决方案1】:

添加即可满足您的需求

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;

到文件的导入部分。 Java 语言在 1.5 中引入了静态导入,您可以在此处阅读更多内容:https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html

一些编程环境支持为您喜欢的方法和类自动添加静态导入。在 Eclipse 中,转到 Window > Preferences > Java > Editor > Content Assist > Favorites 并在那里添加 MatcherAssert 类。

【讨论】:

  • 所以在这种情况下,静态导入不会是不好的做法吧?我听说过很多关于他们为什么不好的原因
  • @Emily 我不确定你听到了什么,但是是的。我认为在测试等情况下,开发人员可能很清楚您正在使用哪个测试框架,结果是更简洁的代码,没有任何严重的混淆或错误风险。
猜你喜欢
  • 2014-09-15
  • 2022-10-13
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 2017-05-13
  • 1970-01-01
  • 2020-08-10
相关资源
最近更新 更多