Sign in Go Pro

JUnit 5 Fundamentals

@ParameterizedTest with @MethodSource

03/05/2019

This lesson is for PRO members.

Upgrade today to get access to all the PRO lessons.

Unlock this lesson
Autoplay

Up next

Previous

About

Overview

The @MethodSource annotation allows you to provide data for a @ParameterizedTest through a Java method. These so-called data methods must be static and should return a collection of Arguments objects, a generic data container for arbitrary values. At runtime, the @ParameterizedTest is called once for each item in the collection returned by its data method.

The @MethodSource receives the name of the data method as a string. If your test lives in a different class than its data method, it's also possible to give the fully-qualified class name to the annotation. Modern IDEs will highlight issues whenever they can't locate a data method from the value of a @MethodSource.

Summary

  • @MethodSource allows data for parameterized tests to come from other Java methods
  • Data methods must be static
  • If test & data method are not part of the same class, the FQCN is required: "com.example.OtherClass#dataMethodName"

Comments

There are no comments on this lesson, start the conversation below ...

>
You need to go PRO to post comments.

Lessons in JUnit 5 Fundamentals

Understand the Core Components of JUnit 5
02:11
Marcel Schnelle
Set up your Java Project for JUnit 5
01:25
Marcel Schnelle
Set up your Android Project for JUnit 5
01:42
Marcel Schnelle
The first @Test
02:06
Marcel Schnelle
Lifecycle with @BeforeEach & @AfterEach
01:09
Marcel Schnelle
Lifecycle with @BeforeAll & @AfterAll
Pro
01:10
Marcel Schnelle
Using 1 Instance per Method with @TestInstance
Pro
01:12
Marcel Schnelle
Using 1 Instance per Class with @TestInstance
Pro
02:01
Marcel Schnelle
Taking advantage of @TestInstance(PER_CLASS) in Kotlin
Pro
01:25
Marcel Schnelle
Bearable Test Method Names with @DisplayName
Pro
02:19
Marcel Schnelle
Checking for equality with assertEquals() & Friends
Pro
02:53
Marcel Schnelle
Using assertTrue() & assertFalse()
Pro
00:51
Marcel Schnelle
Asserting null
Pro
00:38
Marcel Schnelle
Testing Exceptions with assertThrows()
Pro
01:10
Marcel Schnelle
Composing Assertions with assertAll()
Pro
02:00
Marcel Schnelle
Avoiding failure with Assumptions
Pro
01:33
Marcel Schnelle
Ignoring Tests with @Disabled
Pro
01:31
Marcel Schnelle
Conditional Test Execution Pairs: @EnabledOnOs & @DisabledOnOs
Pro
01:43
Marcel Schnelle
Conditional Test Execution Pairs: @EnabledOnJre & @DisabledOnJre
Pro
00:47
Marcel Schnelle
Conditional Test Execution Pairs: @EnabledIfSystemProperty & @DisabledIfSystemProperty
Pro
01:30
Marcel Schnelle
Conditional Test Execution Pairs: @EnabledIfEnvironmentVariable & @DisabledIfEnvironmentVariable
Pro
01:08
Marcel Schnelle
Conditional Test Execution Pairs: @EnabledIf & @DisabledIf
Pro
02:19
Marcel Schnelle
Grouping tests with @Tag
Pro
01:50
Marcel Schnelle
@Nested & Effective BDD in JUnit 5
Pro
03:38
Marcel Schnelle
Running a test multiple times with @RepeatedTest
Pro
05:19
Marcel Schnelle
@ParameterizedTest with @ValueSource
Pro
03:11
Marcel Schnelle
@ParameterizedTest with @EnumSource
Pro
00:31
Marcel Schnelle
@ParameterizedTest with @MethodSource
Pro
02:30
Marcel Schnelle
@ParameterizedTest with @CsvSource & @CsvFileSource
Pro
01:44
Marcel Schnelle
Argument Conversion Techniques for Parameterized Tests
Pro
04:09
Marcel Schnelle
Writing a custom @Source for Parameterized Tests
Pro
04:31
Marcel Schnelle
Introduction to @TestFactory and Dynamic Tests
Pro
01:31
Marcel Schnelle
Grouping Dynamic Tests into Containers
Pro
01:55
Marcel Schnelle
Lifecycle Caveats for Dynamic Tests
Pro
01:06
Marcel Schnelle
Setting up Parallel Test Execution
Pro
02:47
Marcel Schnelle
Parallel Execution Strategies: Dynamic
Pro
02:02
Marcel Schnelle
Parallel Execution Strategies: Fixed
Pro
00:48
Marcel Schnelle
Parallel Execution Strategies: Custom
Pro
03:16
Marcel Schnelle
Synchronizing Parallel Test Execution with @ResourceLock
Pro
03:28
Marcel Schnelle