sdk-java icon indicating copy to clipboard operation
sdk-java copied to clipboard

Workflow instance should be accessible in test environment for simple assertion

Open madhav2302 opened this issue 8 months ago • 0 comments

Is your feature request related to a problem? Please describe. I would like to write unit tests on workflow code, and would like to access workflow for assertions in test env.

eg.

class WorkflowImpl implements Workflow {
    public String value = "something";

//// more workflow code
}

and the value is updated in the workflow code. I would like to add access the values.

Currently there is no easy way to access the workflow object, as we simply register workflow class as type

Describe the solution you'd like I would like to access the workflow object at any point in time for test env, and it should provide me an object of workflow with latest state of workflow.

Like

var workflowImpl = (WorkflowImpl) testWorkflowClient.getWorkflowObject("workflowId", "workflowRunId");
assertThat(workflowImpl.value, is("some-assertion-value"));

Describe alternatives you've considered The other method we have considered is to add a QueryMethod in the workflow but we don't want to add QueryMethod in production code at all.

We can surely do it for tests as well as mentioned at https://temporalio.slack.com/archives/CTT84KXK9/p1747167261307199?thread_ts=1747086843.705119&cid=CTT84KXK9, but it can cause issues when you have multiple variables, and adding QueryMethod for each a lot, and managing QueryMethod for testing can be cumbersome.

Additional context Discussed this previously at Github - https://temporalio.slack.com/archives/CTT84KXK9/p1747086843705119

madhav2302 avatar May 13 '25 20:05 madhav2302