记一个今天遇到的错误

最近在搞 Java 的 mock 测试这一套。先前搞了一下那个 PowerMock 和 UT,然后现在发现 PowerMock 似乎被 Junit5 给甩开了。然后呢,Mockito 趁机而上,本来是 PowerMock 才能 mock 的 static 方法,现在 Mockito 也能 mock 了,而且还是和 Junit5 眉来眼去的,在 GitHub 上更新得也勤快,PowerMock 团队则是心灰意冷。好久不更新了。

话说回来,我遇到的问题是,自己写的 Mockito demo 直接引入两个包就行,一个 Mockito 的,一个 Junit5 的,直接就完事儿了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-inline -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>4.6.1</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.0</version>
<scope>test</scope>
</dependency>

在 mock 静态方法的时候调用的是 mockito-core 这个包。这个包是包含在了 mockito-inline 包中的,我们在 resolve mockito-inline 的 dependency 的时候,会同时下载 mockito-core 的包。

并且,如果我们不需要 mock static 方法的时候,我们就不引入 mockito-inline,而是引入 mockito-core 这个包的。

然后是,问题就是出在了这里。

我自己的 demo 这样导包没问题,但是,同样的导包到公司的项目中,mockito-inline 在 resolve 的时候会自动下载 1.10.10 版本的 mockito-core 包,而不是最新的 4.6.1 版本的。

最后没有办法,我只有在 mockito-inline 中把 mockito-core 给 exclude 掉,然后手动再导入 mockito-core 4.6.1 版本的包,结果果然解决了这个问题。呵。

但是不知道问题出在了哪里,然后今天问了师父,因为快下班了,加上晚上有活动,就暂时还没找到问题究竟是处在了哪里。

说一点题外话,下午师父在看这个问题的时候,另一个同事过来凑热闹,当然,也是个大佬,嫌弃我的屏幕字体太大,呵,我那是保护眼睛。当时还应该更早一点接受沈刚老师的建议的。程序员要注意职业生涯的发展。那位同事说看代码不好看,翻代码不好翻,我:vim。。。

我师父就还好,说了下这个个人习惯。没啥。师父这个人总体上是很好的。为人处世,技术各个方面都比较好。别的同事的导师请食堂吃饭,他直接请了我去外面点了好多像样的硬菜。几百块钱还是要破费的。就是任务不怎么给我分配,倒是我经常会想着去问问题,这一点感觉比学校要好些,学校的老师能够给出我满意的回答的真的很少很少。虽然外面公司也不多。但是师父这样的人就挺好,内敛,符合我对于程序员的期待。

唉,公司沉溺于技术的人真的不多。

师父给我安排的旁边的南大的同事,入职一年多了,多多少少在技术上也能给我一些帮助,但是他的导师,回答问题的时候,那个态度就让我觉得有点不对劲。然后呢,凡事不能只看一面,这里面或许还有一些其他的因果呢?也未可知的。


版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!