Class TestWorkflowExtension

java.lang.Object
io.temporal.testing.TestWorkflowExtension
All Implemented Interfaces:
org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.Extension, org.junit.jupiter.api.extension.ParameterResolver, org.junit.jupiter.api.extension.TestWatcher

public class TestWorkflowExtension extends Object implements org.junit.jupiter.api.extension.ParameterResolver, org.junit.jupiter.api.extension.TestWatcher, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.AfterEachCallback
JUnit Jupiter extension that simplifies testing of Temporal workflows.

The extension manages Temporal test environment and workflow worker lifecycle, and be used with both in-memory (default) and standalone temporal service (see TestWorkflowExtension.Builder.useInternalService(), TestWorkflowExtension.Builder.useExternalService() and TestWorkflowExtension.Builder.useExternalService(String)}).

This extension can inject workflow stubs as well as instances of TestWorkflowEnvironment, WorkflowClient, ActivityClient, WorkflowOptions, Worker, into test methods.

Usage example:


 public class MyTest {

  @RegisterExtension
   public static final TestWorkflowExtension workflowExtension =
       TestWorkflowExtension.newBuilder()
           .setWorkflowTypes(MyWorkflowImpl.class)
           .setActivityImplementations(new MyActivities())
           .build();

  @Test
   public void testMyWorkflow(MyWorkflow workflow) {
     // Test code that calls MyWorkflow methods
   }
 }
 
  • Method Details

    • newBuilder

      public static TestWorkflowExtension.Builder newBuilder()
    • supportsParameter

      public boolean supportsParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws org.junit.jupiter.api.extension.ParameterResolutionException
      Specified by:
      supportsParameter in interface org.junit.jupiter.api.extension.ParameterResolver
      Throws:
      org.junit.jupiter.api.extension.ParameterResolutionException
    • resolveParameter

      public Object resolveParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws org.junit.jupiter.api.extension.ParameterResolutionException
      Specified by:
      resolveParameter in interface org.junit.jupiter.api.extension.ParameterResolver
      Throws:
      org.junit.jupiter.api.extension.ParameterResolutionException
    • beforeEach

      public void beforeEach(org.junit.jupiter.api.extension.ExtensionContext context)
      Specified by:
      beforeEach in interface org.junit.jupiter.api.extension.BeforeEachCallback
    • createTestEnvOptions

      protected TestEnvironmentOptions createTestEnvOptions(long initialTimeMillis)
    • afterEach

      public void afterEach(org.junit.jupiter.api.extension.ExtensionContext context)
      Specified by:
      afterEach in interface org.junit.jupiter.api.extension.AfterEachCallback
    • testFailed

      public void testFailed(org.junit.jupiter.api.extension.ExtensionContext context, Throwable cause)
      Specified by:
      testFailed in interface org.junit.jupiter.api.extension.TestWatcher