如何在MVP中对演示者进行单元测试

古尔赫特

我有一个模型视图主持人三合会。我想知道测试演示者的常用方法是什么。

我想到的第一件事是实例化演示者并实例化实际视图,然后断言该视图将完成预期的行为。

public void itShouldSayHello() {
    View view = new View();
    Presenter presenter = new Presenter(view);
    presenter.userSaid("hello");
    assertTrue(view.getGreeting().equals("hello"));
}

然后,我认为该视图尚未接受测试,因此我创建了一个假视图。

private String greeting;

public void itShouldSayHello() {
    View view = new FakeView();
    Presenter presenter = new Presenter(view);
    presenter.userSaid("hello");
    assertTrue(greeting.equals("hello"));
}
private class FakeView implements View {
    @Override
    public void displayGreeting(String saluto) {
        greeting = saluto;
    }
}

然后我认为视图的界面可能会改变。这会使代码难以维护。因此,我编写了测试,并断言应该向视图提供某些内容。这样即使接口改变了,我也必须在测试中更改一行代码。

public void itShouldSayHello() {
    View view = mock(View.class);
    Presenter presenter = new Presenter(view);
    presenter.userSaid("hello");
    verify(view).displayGreeting("hello");
}

因此,基本上我现在要测试的是,我希望演示者收集并处理一些信息,最后将其传递给视图,然后验证传递的值是否正确。

因此,我想我现在不是在使用伪造的东西,而是在使用模拟,然后验证该模拟是否收到正确的值。

我的另一个问题是模型。但是我认为这是无法克服的。我要查看演示者是否行为正确,要做的是创建一个大型胖子固定装置。然后通过所有各种组合,看看演示者的行为是否正确。

您如何测试演示者?

米沙克斯

您可以利用视图/演示者的分离来测试演示者。如果您已经完全实现了MVP,则View将实现一个接口,Presenter将使用该接口将数据返回给View。如果要测试MVP应用程序,则不仅要使Presenter正常运行,还希望View用来与Presenter通信的界面。

因此,您的测试类应实现View的界面,调用Presenter的方法,并存储来自Presenter的响应(来自覆盖该接口的本地方法)。如果您的Presenter与业务层同步通信,这会更容易:

  1. 定义一个实现View接口的测试类
  2. 在测试类中实现接口,以便演示者准备的数据存储在测试对象中
  3. 在测试类中创建调用演示者的测试方法,从对象获取响应,然后执行适当的比较。

如果您的Presenter异步通信,您将必须在测试方法中执行诸如wait等操作,并从接口方法中进行通知。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Java中对ZipOutputStream进行单元测试

来自分类Dev

如何在MVVM中对异步ICommand进行单元测试?

来自分类Dev

如何在指令中对隔离范围进行单元测试

来自分类Dev

如何在Angular 2中对指令进行单元测试?

来自分类Dev

如何在@ ngrx / data中对EntityCollectionServiceBase进行单元测试?

来自分类Dev

如何在python中对递归函数进行单元测试?

来自分类Dev

如何在指令中对$ emit的间谍进行单元测试?

来自分类Dev

如何在Java中对ZipOutputStream进行单元测试

来自分类Dev

如何在模拟方法中对函数进行单元测试

来自分类Dev

具有多个断言的演示者优先单元测试

来自分类Dev

C# - 如何在生产者/消费者场景中对私有方法进行单元测试?

来自分类Dev

如何在Grails中的Config.groovy中模拟值以进行单元测试

来自分类Dev

如何在openresty中进行单元测试?

来自分类Dev

如何在Netbeans中进行C ++单元测试?

来自分类Dev

如何在 Visual Studio 2015 中进行单元测试

来自分类Dev

如何在 Lumen 上对 GraphQL 响应进行单元测试?

来自分类Dev

尝试使用Dagger 2实现MVP-如何在提供的演示者中获取对Activity的引用

来自分类Dev

如何在MVP中的演示者和数据服务之间传输数据

来自分类Dev

尝试使用Dagger 2实现MVP-如何在提供的演示者中获取对Activity的引用

来自分类Dev

如何在URL规则中对view_func进行单元测试?

来自分类Dev

如何在Robolectric中对RecyclerView和LinearLayoutManager进行单元测试?

来自分类Dev

如何在Laravel 4.1中对auth过滤器进行单元测试?

来自分类Dev

如何在Python中删除(tearDown)单例实例装饰器以进行单元测试?

来自分类Dev

如何在业力angularjs中对setInterval进行单元测试

来自分类Dev

如何在.Net中对Neo4j进行单元测试?

来自分类Dev

如何在SimpleInjector 2.6.1+中对开放的通用装饰器链进行单元测试

来自分类Dev

在Python 3中,如何在模块内部修补函数以进行单元测试?

来自分类Dev

如何在Objective-C中对init方法进行单元测试?

来自分类Dev

如何在Python中对局部变量进行单元测试

Related 相关文章

  1. 1

    如何在Java中对ZipOutputStream进行单元测试

  2. 2

    如何在MVVM中对异步ICommand进行单元测试?

  3. 3

    如何在指令中对隔离范围进行单元测试

  4. 4

    如何在Angular 2中对指令进行单元测试?

  5. 5

    如何在@ ngrx / data中对EntityCollectionServiceBase进行单元测试?

  6. 6

    如何在python中对递归函数进行单元测试?

  7. 7

    如何在指令中对$ emit的间谍进行单元测试?

  8. 8

    如何在Java中对ZipOutputStream进行单元测试

  9. 9

    如何在模拟方法中对函数进行单元测试

  10. 10

    具有多个断言的演示者优先单元测试

  11. 11

    C# - 如何在生产者/消费者场景中对私有方法进行单元测试?

  12. 12

    如何在Grails中的Config.groovy中模拟值以进行单元测试

  13. 13

    如何在openresty中进行单元测试?

  14. 14

    如何在Netbeans中进行C ++单元测试?

  15. 15

    如何在 Visual Studio 2015 中进行单元测试

  16. 16

    如何在 Lumen 上对 GraphQL 响应进行单元测试?

  17. 17

    尝试使用Dagger 2实现MVP-如何在提供的演示者中获取对Activity的引用

  18. 18

    如何在MVP中的演示者和数据服务之间传输数据

  19. 19

    尝试使用Dagger 2实现MVP-如何在提供的演示者中获取对Activity的引用

  20. 20

    如何在URL规则中对view_func进行单元测试?

  21. 21

    如何在Robolectric中对RecyclerView和LinearLayoutManager进行单元测试?

  22. 22

    如何在Laravel 4.1中对auth过滤器进行单元测试?

  23. 23

    如何在Python中删除(tearDown)单例实例装饰器以进行单元测试?

  24. 24

    如何在业力angularjs中对setInterval进行单元测试

  25. 25

    如何在.Net中对Neo4j进行单元测试?

  26. 26

    如何在SimpleInjector 2.6.1+中对开放的通用装饰器链进行单元测试

  27. 27

    在Python 3中,如何在模块内部修补函数以进行单元测试?

  28. 28

    如何在Objective-C中对init方法进行单元测试?

  29. 29

    如何在Python中对局部变量进行单元测试

热门标签

归档