【问题标题】:How to write tests in junit for methods that return void and implement runnable?如何在junit中为返回void并实现runnable的方法编写测试?
【发布时间】:2013-11-28 09:48:19
【问题描述】:

我需要为实现可运行的方法编写 junit 测试,并且代码的整个逻辑都在 run() 方法中。 例如:

public  class BookmarkController{
 public void addBookmark(final String url, final String title) {
       Runnable r = new Runnable() {
                   @Override
                   public void run() {
                                     //some logic

                                    };
}
}

谁能告诉我如何为该方法编写测试。

【问题讨论】:

  • 你想测试什么?
  • 另外,我假设您遗漏了向线程提交的内容,否则不会执行任何操作(并且可能会优化 Runnable 的分配)。

标签: java android junit junit3


【解决方案1】:

你运行addBookmark() 然后我假设你有一个getBookmarks() 方法。运行addBookmark() 方法后,检查getBookmarks() 方法以查看您使用addBookmark() 添加的书签是否已添加。如果实现Runnable 的线程预计需要一些时间,您可以在RetriedAssert 中进行测试,这将在一段时间内一遍又一遍地重试测试。有效地等待一定时长的通过,如果超过时长仍然发现失败,则失败。

new RetriedAssert(2000,100){
  public void run() throws Exception{
    assertTrue(yourClass.getBookMarks().contains(bookmark));
  }
}.start();

【讨论】:

    【解决方案2】:

    一般来说,匿名类相当于私有方法,即:实现细节是私有的,理想情况下您应该测试其行为。如果您的测试检查是否添加了BookMark,就足够了。您也可以考虑使用 Mock 框架(设置期望/验证)

    【讨论】:

      猜你喜欢
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2013-08-01
      相关资源
      最近更新 更多