BTW: mockito can stub final methods as well: 
https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2#unmockable 
<https://github.com/mockito/mockito/wiki/What's-new-in-Mockito-2#unmockable>

Which method did you try to stub that is final? Maybe you can change that part 
in your code by using a facade or adapter...

> Am 09.07.2019 um 03:34 schrieb 'Benjamin Beggs' via Jenkins Developers 
> <[email protected]>:
> 
> I almost had this working with Mockito but hit a wall...it's possible 
> PowerMock will solve the issue. I'll give this a go!
> 
> On Monday, July 8, 2019 at 6:58:44 PM UTC-4, Gavin Mogan wrote:
> You can probably use powermock to override the static Calendar.getInstance()
> 
> But I don't easily know if that function is used to generate the internal 
> build time, but you can probably track it down with a breakpoint in 
> build.class
> 
> On Mon, Jul 8, 2019 at 3:36 PM 'Benjamin Beggs' via Jenkins Developers 
> <[email protected] <>> wrote:
> I think a full implementation with Mockito is untenable. It seems I would 
> need to mock an excessive amount of function returns and the result may still 
> be inflexible and finnicky.
> 
> I'll follow the JenkinsRule method you're talking about...I expect I can 
> still mock the date data. Thanks for the help here. :)
> 
> On Monday, July 8, 2019 at 6:08:33 PM UTC-4, Gavin Mogan wrote:
> That shouldn't be the case if you use JenkinsRule, actually create the 
> project, and run a quick echo pipeline a few times.
> 
> I know from working on the java 11 stuff, that mockito has trouble mocking 
> functions that are final, it'll silently not do so. Its going to save you a 
> ton of headaches to use JenkinsRule.
> 
> @Rule
> public JenkinsRule j = new JenkinsRule()
> 
> p = j.createFreeStyleProject("name");
> jenkins.assertBuildStatus(Result.SUCCESS, p.scheduleBuild2(0)); // build 1
> jenkins.assertBuildStatus(Result.SUCCESS, p.scheduleBuild2(0)); // build 2
> jenkins.assertBuildStatus(Result.SUCCESS, p.scheduleBuild2(0)); // build 3
> 
> but i see you are messing with dates, so that might be trickier, i'm not sure.
> 
> You can try subclassing FreeStyleProject, and overriding the function to 
> return the value you want. 
> If that works fine, then its how the function matching/overriding works in 
> mockito, if it doesn't work, then its the weird final/static stuff that 
> mockito has trouble with. You might need to also use powermock and prepare 
> for test.
> 
> On Mon, Jul 8, 2019 at 12:40 PM 'Benjamin Beggs' via Jenkins Developers 
> <[email protected] <>> wrote:
> The issue here is with my build history instantiation. All build retrieve 
> calls return null regardless of method (getFirstBuild, getLastBuild, 
> getBuildByNumber, etc).
> 
> On Monday, July 8, 2019 at 3:24:47 PM UTC-4, Benjamin Beggs wrote:
> I will investigate this further, thanks for pointing this implementation out 
> to me.
> 
> On Monday, July 8, 2019 at 1:52:40 PM UTC-4, Jesse Glick wrote:
> On Mon, Jul 8, 2019 at 1:39 PM 'Benjamin Beggs' via Jenkins Developers 
> <[email protected] <>> wrote: 
> > Do you have an example of a similar implementation for unit testing using 
> > jenkinsrule? I may try just porting the tests over to this. 
> 
> I would definitely advise using `JenkinsRule` over mocking frameworks. 
> Slower, but much more realistic (and much more likely to continue 
> running after internal refactorings). Example: 
> 
> https://github.com/jenkinsci/jenkins/blob/a6f5b2b1288d15cd2ea5c2fd9b8916e6397bf795/test/src/test/java/hudson/tasks/LogRotatorTest.java#L67-L82
>  
> <https://github.com/jenkinsci/jenkins/blob/a6f5b2b1288d15cd2ea5c2fd9b8916e6397bf795/test/src/test/java/hudson/tasks/LogRotatorTest.java#L67-L82>
>  
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Jenkins Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/jenkinsci-dev/610d3de0-c377-4c4c-bd2d-db00c84b6f41%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/jenkinsci-dev/610d3de0-c377-4c4c-bd2d-db00c84b6f41%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Jenkins Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/jenkinsci-dev/529dd72d-c30c-44df-83b5-e4ffacfa7694%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/jenkinsci-dev/529dd72d-c30c-44df-83b5-e4ffacfa7694%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Jenkins Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/jenkinsci-dev/1dd9d470-5c0a-4ff3-bc3e-78610c593b28%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/jenkinsci-dev/1dd9d470-5c0a-4ff3-bc3e-78610c593b28%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/761DC01E-FF74-4A6D-9EFC-0764243AE27C%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to