【问题标题】:MVP vs MVP2 - Best practices to run test in JVMMVP vs MVP2 - 在 JVM 中运行测试的最佳实践
【发布时间】:2012-02-27 14:30:46
【问题描述】:

在 MVP 中,View 为小部件的接口提供 getter 方法 - 例如 hasClickHandler aso。 - 以便演示者可以访问这些 ClickHandler 以添加侦听器和设置值。

这使得视图非常愚蠢。

如果你想测试一个 mvp 演示者,你必须模拟视图并且你必须为按钮创建模拟以模拟对按钮的点击。

另一方面,在 MVP2 中,视图知道演示者,并且演示者提供像 onButtonClick 这样的方法,视图添加了那个 ui 处理程序。这使视图知道演示者,但我认为这更容易测试。

那么 MVP 和 MVP2 的优缺点是什么?

真的可以为每个小部件编写模拟以创建好的视图模拟吗?

MVP 相对于 MVC 的一个好处是,您知道 Presenter、View 和 Model 中的内容。我不太确定 MVP2 是否能像 MVP 一样清楚地说明这一点。

你的经验是什么?

【问题讨论】:

  • 我保留这个问题是为了鼓励其他答案。

标签: gwt testing mvp


【解决方案1】:

我使用了这两种方法,我认为使用 MVP2 模式有两个优点(通过演示者接口查看演示者中的方法):

  • 您不必在演示者中为视图的所有HasXXXHandler 方法创建如此多的内部(匿名)回调。
  • 编写单元测试更容易,因为您不必为所有HasXXXHandler 接口创建模拟,而使用BDD,您只需测试是否调用了演示者的接口函数。

MVP 也只是一种模式,与任何其他设计模式一样,它只是一个指导方针。没有必要为了坚持最纯粹的实现而让你的生活变得更加艰难。

【讨论】:

  • 好的,所以你的Presenter 知道你的View,反之亦然?
  • 是的,我的View 和我的Preserenter 都有所谓的委托接口,它们定义了另一个“合作伙伴”为了相互通信而必须实现的合同。通过使用接口,它可以完全分离和测试。看看这个:codeproject.com/Articles/42967/Model-View-Presenter-via-NET
猜你喜欢
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 2011-06-29
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多