meetup 06/2015 - @testsetup

14
Apex Test Classes @testsetup Paris Salesforce Developer Group 03/06/2015 Fabien Taillon @FabienTaillon

Upload: paris-salesforce-developer-group

Post on 07-Aug-2015

55 views

Category:

Technology


5 download

TRANSCRIPT

Apex Test Classes

@testsetup Paris Salesforce Developer Group

03/06/2015

Fabien Taillon @FabienTaillon

In every Test Class you should :

Create your own test data

Test your code

Assert the results of your test

What is a Test Class

Test Class

Usual Test Class

Method 1

Create Data

Execute Test 1

Assert Results 1

Method 2

Create Data

Execute Test 2

Assert Results 2

Method 3

Create Data

Execute Test 3

Assert Results 3

Test Class

Usual Test Class

Method 1

Create Data

Execute Test 1

Assert Results 1

Method 2

Create Data

Execute Test 2

Assert Results 2

Method 3

Create Data

Execute Test 3

Assert Results 3

Execute Test 1

Assert Results 1

Execute Test 2

Assert Results 2

Execute Test 3

Assert Results 3

This is the aim and heart of your tests

Test Class

Usual Test Class

Method 1

Create Data

Execute Test 1

Assert Results 1

Method 2

Create Data

Execute Test 2

Assert Results 2

Method 3

Create Data

Execute Test 3

Assert Results 3

Create Data Create Data Create Data

This must be done, but potentially doing X times the same thing !!

Test Class

Usual Test Class

Method 1

Create Data

Execute Test 1

Assert Results 1

Method 2

Create Data

Execute Test 2

Assert Results 2

Method 3

Create Data

Execute Test 3

Assert Results 3

ex: 30s ex: 30s ex: 30s

This must be done, but potentially doing X times the same thing !!

Meaning execution time lost for nothing !!

ex: 1mn30 instead of 30s

Create Data Create Data Create Data

What if we could do the same job

only once ?

What if we could do the same job

only once ?

Here comes @testsetup !

Test Class

Usual Test Class

Method 1

Create Data

Execute Test 1

Assert Results 1

Method 2

Create Data

Execute Test 2

Assert Results 2

Method 3

Create Data

Execute Test 3

Assert Results 3

Test Class

@testsetup

Method 1

Execute Test 1

Assert Results 1

@testsetup method : Create Data

Method 2

Execute Test 2

Assert Results 2

Method 3

Execute Test 3

Assert Results 3

Test Class

@testsetup

Method 1

Execute Test 1

Assert Results 1

@testsetup method : Create Data

Method 2

Execute Test 2

Assert Results 2

Method 3

Execute Test 3

Assert Results 3

@testsetup method : Create Data

• Creation of test data is now common to all methods

• Executed once

• Rollbacked between all methods

Test classes execute faster !!

DEMO

Test setup methods are supported only with the default data isolation mode for a test class

Multiple test setup methods are allowed in a test class, but the order in which they’re executed by the testing framework isn’t guaranteed

If a fatal error occurs during the execution of a test setup method, the entire test class fails, and no further tests in the class are executed

If a test setup method calls a non-test method of another class, no code coverage is calculated for the non-test method

What else ?