You should be able use mockito (or any other mocking framework), something like...
AWSCredentialsProviderService service = Mockito.mock(AWSCredentialsProviderService.class) //setup whatever you want the mock to do runner.setProperty(service, AbstractAWSCredentialsProviderProcessor.AWS_CREDENTIALS_PROVIDER_SERVICE, "awsCredsProviderService"); runner.enableControllerService(service); On Thu, Oct 17, 2019 at 1:54 PM sanjeet rath <[email protected]> wrote: > > Thanks a lot bryan , for helping me to identify proper UNIT testing. > I will go with ur suggestion, will write unit testing for custom > controlerservice and separate for custom processor service. > If possible Can u give me a example of mock the > AWSCredentialsProviderService interface. > > Regards, > sanjeet > > On Thu, Oct 17, 2019 at 9:41 PM Bryan Bende <[email protected]> wrote: > > > Please only email one list, removing users... > > > > The AWS processors depend on an interface called > > AWSCredentialsProviderService. The unit test of the processor should > > not need to depend on real implementations of this interface, > > otherwise it is really an integration test of multiple components. > > > > I would suggest testing your processor and service separately... the > > processor test can mock the AWSCredentialsProviderService interface. > > > > > > On Thu, Oct 17, 2019 at 11:50 AM sanjeet rath <[email protected]> > > wrote: > > > > > > Hi Team, > > > > > > I am new to this community, today i have joined and this is my first > > query.(already from last 15 days i got stuck here) > > > > > > I have build a nifi custom processor.to put a object in AWS s3 > > bucket.(Just Modified Puts3Object processor in NIFI- AWS-PROCESSOR project) > > > In this processor Awscredentialprovidercontrolerservice is the default > > one to connect AWS. > > > > > > But our project structure we have a custom controller service > > ,Awscredentialprovidercontrolerservice controller service to connect AWS > > with our defined attributes.(This is present in a separate project > > NIFI-AWS-CUSTOM_PING_CONTROLER) > > > I want to use this custom controller service , instead of the default > > Awscredentialprovidercontrolerservice one which is present in the NIFI- > > AWS-PROCESSOR project > > > > > > My question is I want to do the unit testing (Using JUnit & Mockito) to > > validate this custom Awscredentialprovidercontrolerservice is working or > > not like if I get invalid bucket name then test case should failed. > > > > > > My code structure: > > > @Test > > > public void testRetryLogin() { > > > final TestRunner runner = TestRunners.newTestRunner(new > > puts3Object); > > > final Awscredentialprovidercontrolerservice serviceimpl= new > > Awscredentialprovidercontrolerservice() > > > Runner.setproperty(…) > > > Runner.enablecontrolerservice(serviceimpl) > > > runner.run(); > > > // will do assert } > > > > > > This gives me compiler error in error in > > Awscredentialprovidercontrolerservice instance creation line as custom > > controller service project is not available to this processor service > > project. If we add dependency in pom file to make it available then it will > > be circular dependency. > > > Because already in custom controlerservice pom file , custom processor > > is already added in dependency.. > > > > > > Thanks in advance :) > > > > > > -- > > > Sanjeet Kumar Rath, > > > mob- +91 8777577470 > > > > > > > > -- > Sanjeet Kumar Rath, > mob- +91 8777577470
