2

I'm writing testing library with my own junit runner. it extends BlockJUnit4ClassRunner which is available since 4.5 till... who knows. user of my library should be able to choose whatever junit version (with BlockJUnit4ClassRunner of course). and i don't know how to define dependency on junit (let's say current version is 4.10).

  • if i make [4.5, 4.10] provided, then i have to release new version with every junit release
  • i'm not sure if [4.5, ) is good a good practise because it implicitly chooses the newest version and build may not be repeatable

e.g. mockito uses ant and junit 4.10 only for compilation and have no maven dependency on it. i also don't know if it's a good practice.

how should i solve this dependency problem

4

3 回答 3

1

一般来说,JUnit 版本是向后兼容的[*]。开发人员非常小心,以便它们向后兼容。一种选择是声明对 JUnit 4.5 的依赖,然后用户可以在他们的 pom 中覆盖该版本(使用版本 4.10),它应该仍然可以工作。

如果您正在执行上述操作并声称它适用于 4.5 之后的所有版本,那么您也应该使用所有版本进行测试,这应该很容易做到。

[*] 当然不推荐使用类和方法,但仍然可以正常工作。

于 2012-10-25T05:31:34.230 回答
1

如果您总是想坚持使用最新版本的 junit,请使用

<version>LATEST</version>

以上将始终引用 junit 的最新发布或快照版本。

如果你使用

<version>RELEASE</version>

然后它将引用存储库中存在的最后一个发布/非快照版本。

声明一个开放式版本范围也没有问题,它将包括 xyz 之后的最新版本,即

<version>[x.y.z,)</version>

但是,当 junit 世界中可能发生与您的工件不兼容的 API 级别更改时,事情就会变糟。从这个意义上说,最好提供一个准确的版本并要求客户遵循相同的版本。

于 2012-10-24T22:16:39.470 回答
0

版本标记 LATEST 和 RELEASE 的问题仅受 Maven 2.2.1 及之前的版本支持,但不再支持 Maven 3。所以问题是避免它们。

此外,如果您将对 JUnit 的依赖定义为提供的用户可以使用不同的版本而不是定义的版本。

于 2012-10-25T07:05:45.920 回答