Hi Ishara, Please check[1] which discusses this issue in Jacoco.
One option is to move the new object creation into a protected method and override the implementation in a subclass. The con is this will add additional lines to the class being tested and therefore will have to be decided whether the effort is useful case by case. But if the method being tested is static then there is no way to override and hence no way to unit test this without a refactoring effort as I am aware of. We have mixed object creation with business logic in the code you have provided. This leads to untestable code. [1] https://github.com/jacoco/jacoco/issues/51 On Tue, Oct 10, 2017 at 9:31 AM, Ishara Cooray <isha...@wso2.com> wrote: > Hi, > > Let's say in a legacy code we have new instance created inside the > constructor and it is being used inside methods to be unit tested as below. > > public boolean updateApi(String apiConfig, String tenantDomain) throws > AxisFault { >> try { >> return restApiAdminStub.updateApiForTenant(qualifiedName, apiConfig, >> tenantDomain); >> } catch (Exception e) { >> throw new AxisFault("Error while updating API in the gateway. " + >> e.getMessage(), e); >> } >> } >> >> > Where restApiAdminStub is created within the constructor as below. > >> public RESTAPIAdminClient(String apiProviderName, String apiName, String >> version) throws AxisFault { >>> this.qualifiedName = apiProviderName + "--" + apiName + ":v" + version; >>> this.qualifiedDefaultApiName = apiProviderName + "--" + apiName; >>> restApiAdminStub = new RestApiAdminStub(null, backendURLl + >>> "RestApiAdmin"); >>> >>> } >>> >>> > One option to mock the new instance is, use PowerMockito.whenNew() > But if we use that, we need to annotate the class that is creating the new > instance with @PrepareForTest annotation and that leads to remove the > @PrepareForTest annotation that we use to annotate Test class. Because of > that this test class is getting excluded from jacoco report. > > Do we have any other solution for this? > > Thanks & Regards, > Ishara Cooray > Senior Software Engineer > Mobile : +9477 262 9512 <+94%2077%20262%209512> > WSO2, Inc. | http://wso2.com/ > Lean . Enterprise . Middleware > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Thanks & Regards, *Fazlan Nazeem* Senior Software Engineer WSO2 Inc Mobile : +94772338839 <%2B94%20%280%29%20773%20451194> fazl...@wso2.com
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev