| 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 | |
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