I am new to jira plugin development and am creating my first plugin but I am having trouble unit testing. My main question is what is the best way to unit test a function that uses ComponentManager. Should I try to mock everything, do I have to use dependencies to test, or should I just save something like this for an integration test? All questions I have read using ComponentAccessor in unit testing do not work.
Trying to mock(ComponentAccessor.class) does not work because it is still null and when I try to use a
when(ComponentAccessor.getIssueLinkManager().getOutwardLinks(epic.getId())).thenReturn(Collection<IssueLink. links);
It still says componentAccessor has not been initialized.
I have tried using mocks and adding jira-tests as a dependency to be able to use MockComponentWorker and MockitoMocksInContainer but the classes seem to not know anything about these and their imports. To me it seems like I have to write everything from scratch but I have seen people use an import like this
import com.atlassian.jira.junit.rules.MockComponentContainer;
But no dependency I use seems to know about anything like this.
Below describes my set up more:
I have a simple plugin that uses the tutorial https://developer.atlassian.com/server/jira/platform/adding-content-to-the-jira-view-issue-page/ to roll up all issue times into an epic, instead of what the tutorial java class does. So it uses the same .java class in src/main/java/com that extends AbstractJiraContextPorvider. Inside here I have a method that uses the line
final Collection<IssueLink> links = ComponentAccessor.getIssueLinkManager().getOutwardLinks(epic.getId());
When I try to test it I am getting the error ComponentAccessor not initialized. Along with
"Developers that encounter this message within a unit test
should use n MockitoMocksInContainer rule to initialize mockito and ComponentAccessor.
For more detailed explanation read the documentation
for MockComponentWorker in the jira-tests artifact for more information
about what causes this error and how to address it."
Any suggestions/comments on any type of testing I would appreciate! Thanks
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.