German English

Testing and building of Eclipse Plug-ins and RCP Applications Training

Duration Duration
3 days Software developers
and architects

Workshop overview
In this training, you will learn how to efficiently test and build Eclipse plug-ins, features, RCP applications and p2 update sites via an automated process. The testing with JUnit will be introduced as well as popular open source test frameworks, such as Mockito, Hamcrest and AssertJ. The Maven Tycho build System is used to automatically generate Eclipse artifacts, which is also used to build the Eclipse Platform.

Afterwards you will learn how to automate everything with a continues integration system as Jenkins.

This training can be tailored to the needs of your team.

Training prerequisites
Knowledge of Eclipse Plug-in and Eclipse RCP programming are assumed.


Onsite or virtual Training

Place Date Language Price
At your location or virtual tbd German / English Upon request


Agenda Download Agenda

Eclipse Plug-in and application design

  • Importance of automatic builds
  • Automatic build validation via tests
  • Eclipse plug-in and application design for tests

Introduction Maven / Tycho

  • Brief history
  • Overview, benefits, examples
  • Brief introduction to Maven
  • Relationship with other build technologies

Using Maven

  • Introduction to Maven
  • Using Maven for Java programs
  • Maven dependency management
  • Using Maven repositories

Building an Eclipse plug-in

  • Introduction of pom.xml
  • Review of the Tycho configurations
  • Running our first build on the command line
  • Dealing with dependencies - target platform & repositories

Building multiple plugins

  • Aggregation & parent pom
  • Build order / reactor

Building features and p2 repositories

  • The role of features
  • Creation of feature & pom

Building p2 repositories

  • The role of p2 repositories
  • Categorizing content in a repository
  • Good practices to manage p2 repositories

Building products

  • What are RCP app / products
  • Building a product archive
  • Building a product repository
  • Multi-platform builds

Unit Testing with JUnit

  • JUnit 4.x
  • Using JUnit test runner
  • Using JUnit Rules and parameterized tests

Developing unit tests for Eclipse components

  • Plug-in tests
  • Overview of the Eclipse test API
  • Developing unit tests without Eclipse dependencies
  • Developing plug-in test tests

Using Mockito for replacing object dependencies

  • Using Mockito to create test fixtures
  • Mocking method call and parameter access
  • Mocking method calss and parameter access

Using advanced Assert frameworks

  • Using and extending Hamcrest Matcher
  • Using and extending AssertJ Matcher
  • Developing custom matchers and actions with Hamcrest and AssertJ

User interface testing within one application

  • Using SWTBot
  • Using RCP Testing Tool (RCPTT)

Running tests

  • Create pom for plug-in test project
  • Running JUnit tests
  • Overview of SWTBot
  • Dealing with the details (start level / additional dependencies)

Using non-OSGi libraries

  • Why using non-OSGi libraries
  • Strategies for dealing with non-OSGi libraries

Continuous Integration

  • Integration into Jenkins / Hudson
  • Jenkins / Hudson Quality plug-ins (sonar...)
  • Git Commit Hook

Updates with Eclipse p2

  • Overview: the p2 provisioning platform
  • Creating p2 update sides
  • Using the p2 API
  • Updating products and features
  • Automatic product updates during startup