为啥 JUnit 的 assertTrue 没有得到解决?

Posted

技术标签:

【中文标题】为啥 JUnit 的 assertTrue 没有得到解决?【英文标题】:Why isn't JUnit's assertTrue being resolved?为什么 JUnit 的 assertTrue 没有得到解决? 【发布时间】:2016-02-10 18:49:58 【问题描述】:

我有一个遵循标准 Maven 结构的项目:

项目 源 主要 java 测试 java

在某些类中,assertTrue 可以被解析,而在其他类中则无法解析。

我从正在解析的类(在 src/java/test 目录中)获取静态导入,并将其粘贴到无法解析 assertTrue 的类中(在 src/java/main 目录中)并且没有解决它。

所以使用import static org.junit.Assert.assertTrue; 是行不通的。

使用Assert.assertTrue 也不起作用。

编辑:

我在最初的帖子中没有明确说明的一件事是,这不是一个带有单元测试的标准 Java 项目。该项目是另一个 Java 程序的集成测试框架。因此,该项目中的所有代码都用于使用外部 REST API 测试另一个程序的功能。因此,为什么我在测试文件夹之外有一个 Junit 断言。当然,可能仍有机会清理它。

【问题讨论】:

我没有投反对票。但是最好不要让 main 下的代码依赖于 JUnit,并找到一种不同的方式来实现您的断言,无论是使用语言关键字还是您自己的实用程序。 这是有道理的。我可能会修改代码的特定部分。我提出这个的主要目的是记录如何指定依赖项可能会影响范围。我看到的关于 assertTrue 没有解决的所有其他问题只提到了静态导入。这对我来说还不够。 【参考方案1】:

所以问题出在我的build.gradle 文件中,我将junit 依赖项指定为testCompile 依赖项。这意味着它只适用于 src/test 目录中的类。因此,为了解决我的问题,我将 build.gradle 更改为使用 compile('junit:junit:4.12')

我也可以将无法解析的文件移动到 src/test 目录中,但该文件在逻辑上不属于那里。

【讨论】:

以上是关于为啥 JUnit 的 assertTrue 没有得到解决?的主要内容,如果未能解决你的问题,请参考以下文章

java中Junit测试

junit 中的assert 方法

junit4 Assert静态方法及API

junit测试assert各种断言用法

Java JUnit pass/failure/error区别

junit4 assert类中的assert方法总结