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.
