Show Nav

Presenter First

MVP Graphical User Interface Testing

What is Presenter First?

Presenter First (PF) is a technique for organizing source code and development activities to produce fully tested applications from customer stories using Test-Driven Development. Though it can be applied in a variety of settings, it is most often used in GUI applications.

History

The core idea of Presenter First came when Mike Marsiglia and Brian Harleton were working on an application team at X-Rite. The pain they felt on adapting a large GUI application suite to the needs of a major customer drove them to create what later developed into and became known as Presenter First. David Crosby worked with Mike and Brian, wrestled with the problems of triad composition and instantiation, and refined the process and motivations for building Presenter First style. The "Burke Porter Dyno Host project was the first large project done in Presenter First style from inception.

Papers

"Big, Complex, and Tested? Just Say 'When'"

Appeared in Better Software, February 2007

Better Software Magazine reprint (PDF)

"Presenter First: Organizing Complex GUI Applications for Test-Driven Development"

The definitive technical description of Presenter First from the Agile International Conference, 2006.

Agile 2006 Conference paper (PDF)

Examples

Resources

The original paper on Presenter First (PDF) was not formally published. It describes the core idea and many of the advantages of using this technique.

MVP/Presenter First Video Example by Brian Marick

Video Podcast series with Ron Jacobs of ARCast: Part 1, Part 2, & Part 3

Mocking tools such as NMock, OCMock, JMock, and HardMock are helpful in speeding Presenter First unit testing.

Visual Studio VB macros (TXT) for MVP navigation in C# projects (includes a Test file creator).

Christopher Atkins' approach to PF in ASP.NET: " Presenter First with POA"

Contributed Tools

" A Modeling Tool for the Presenter First Pattern" by Brooke Hamilton of FM Global

"Creating a DSL for Presenter First" – Brooke also provides an interesting write-up on his extension of Presenter First and how to describe the pieces using a succinct DSL