问题标签 [junit-rule]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
992 浏览

java - JUnit + Java + ErrorCollector issue

I'm having some trouble with ErrorCollectors in Java.

I have some code, which is comparing two values. If the values match, a pass is the result. If the values do not match, a fail. Sounds simple. So I created a basic test case:

Which behaves exactly as I wanted it to. However I wanted to then make this code able to be called from elsewhere. So I created my "main" file like this:

And moved the code to do the check into:

But now when I run the code, I always get a pass, even when I introduce a value to cause a fail to be generated. I cannot see what I am doing wrong here. (I know the code is messy - this is just my attempt to break things down to their simplest way to try and see my issue.)

0 投票
2 回答
1050 浏览

java - 将 CLASSPATH 更改为 JUNIT_HOME/junit-4.12.jar,java 命令停止工作

当我将CLASSPATH变量更改为JUNIT_HOME/junit-4.12.jar系统变量时,我的 Java 命令停止工作。

例如,当我想执行一个类文件时,我收到错误“无法找到或加载主类”,但javac工作正常。

当我删除 时CLASSPATH,该java命令再次开始工作。

0 投票
2 回答
6175 浏览

java - java.lang.IllegalStateException:尚未创建临时文件夹

我正在@Rule为我的用例创建一个新的看起来像

在我的Test我用它作为

当我运行这个测试时,我得到错误

好像在创建自己的时候@Rule,我不能依赖任何现有的@Rule

是这个问题吗?我该如何解决?

0 投票
1 回答
665 浏览

android - 测试 PreferenceFragment 不适用于 Espresso 和 JUnit-Rules 或 ActivityInstrumentationTestCase2

我正在开发一个带有设置屏幕的应用程序,我想用浓缩咖啡对其进行测试。在此设置屏幕中,我添加了一个 PreferenceFragment,如下所示:

设置活动

当我以正常方式使用此设置屏幕时,它工作得非常好,但是当我尝试检查和更改意式浓缩咖啡测试中的偏好时,有些事情变得奇怪。

AndroidJUnit4 测试

这是我从 Espresso 得到的错误:

所以我进一步调查发现,当我正常使用该应用程序和在 Espresso 测试中使用它时,我的设置页面的布局看起来不同。通常在 ID 为 content_frame 的 LinearLayout 内部只有一个孩子(其 ID 为 android:id/list。但是当我运行 Espresso 测试时,我看到相同的 LinearLayout 视图包含 2 个孩子。

当我在 Espresso 测试中运行以下代码时:

我得到以下输出:

但是当我不是在浓缩咖啡测试中而是在活动中运行类似的代码时,我得到以下输出:

因此,当我正常使用该应用程序时,我得到的不是只有一个 ID 为 android:id/list 的孩子,而是在运行 espresso 测试时得到了两个孩子。

我做错了什么,为什么层次结构看起来与正常使用中的层次结构如此不同?

0 投票
2 回答
9674 浏览

java - 如何创建带有子文件夹的 JUnit TemporaryFolder

我想创建一个代表这种树的 baseFolder 的 JUnit TemporyFolder:

据我了解,我可以设置一个 TemporaryFolder,然后可以使用位于该文件夹中的“newFolder()”伪文件夹创建。但是我怎样才能在下面创建图层呢?特别是在测试后清理的方式。

0 投票
0 回答
761 浏览

java - 预期的异常和预期的消息不在循环中工作

大家好,我正在对 Spring MVC 项目进行 Junit 测试。这里是下面的代码

待测方法

我正在测试它的正面和负面情况。

这是我的负面测试用例

在这里,我尝试输入错误的用户 ID 并期望抛出运行时异常。代码工作正常,它会随消息一起引发期望。但问题是它只为第一个输入调用一次,其他输入值不被执行。我怎样才能让它循环工作?注意:Junit 测试用例通过并显示绿色条。

我已经更改了代码,但这也不适用于循环。我在哪里做错了??

0 投票
1 回答
1394 浏览

java - 由于公共私有领域悖论,无法使用 Junit @Rule 进行 CdiUnit 测试

以下代码片段足以重现我的问题:

  • 要么我设置thrown属性public并得到错误org.jboss.weld.exceptions.DefinitionException: WELD-000075: Normal scoped managed bean implementation class has a public field
  • 或者我删除public修饰符并得到错误org.junit.internal.runners.rules.ValidationError: The @Rule 'thrown' must be public.
  • 我还尝试让public修饰符就位并@Dependent在类上添加注释范围,但出现错误org.jboss.weld.exceptions.DefinitionException: WELD-000046: At most one scope may be specified on [EnhancedAnnotatedTypeImpl] public @Dependent @ApplicationScoped @RunWith

我删除了所有不必要的代码,但这是一个相当复杂的单元测试,其中包含模拟、通过 CDI 进行的服务注入和一些测试方法,预计会引发异常。

所以我的问题是,一方面 Weld 希望所有字段都不公开,因为否则它将无法代理类,另一方面,JUnit 希望 Rule 字段公开,因为它使用反射来访问它们和setAccessible(true)由于安全管理器处于活动状态,因此不想使用该方法。如何处理这个悖论?

注意:我还发现了对此答案的提示评论,指出

你也可以用@Rule注解一个方法,这样可以避免这个问题

但是我找不到任何带有@Rule方法注释的 junit 测试示例,我打算就此提出一个单独的问题。

0 投票
1 回答
1375 浏览

java - JUnit 似乎没有调用我重写的 TestWatcher 失败/成功方法

注意:MyTest 的代码已更新以反映我找到的答案,这是由 JUnit 生态系统中可用的多个 assertEquals() 实现引起的。

我在 C 中看到过类似的问题,但没有答案/响应。我要么在实现上左转,要么忽略了一些简单的事情。所以...

我希望在控制台上看到“IT FAILED”和“IT PASSED”,但并不高兴。只有“testFailure()”和“testSuccess()”输出。

TestRunner 实现

测试实现

TestWatcher 实现

0 投票
0 回答
297 浏览

easymock - 从 JUnit 4.10 到 4.11 的 Unitils EasyMock 和 JUnit @Rule

我有一个问题,当我@Rule为我使用 JUnit 的注释TemporaryFolder并想同时使用Mocks时,我在4.11 中unitils.easymock得到了一个,而在4.10 中它仍然有效。IlleagalStateExceptionJUnitJUnit

因此,以下测试在 JUnit 4.10 下运行并IllegalStateException在 4.11 中抛出:

即使我使用模拟功能的注释而不是extends UnitilsJUnit4它在 JUnit 4.11 中不起作用:

测试此代码时的错误消息是:

我刚刚还发现了一些新的东西:在 JUnit 4.10 中,在newFile()调用中传递字符串时,我也可以强制执行相同的错误:

我的问题:

在 JUnit 4.11中,使TemporaryFoldersor @Rules 通常与 s 一起工作的正确方法是什么?unitils.easymock.annotation.Mock

还是不能同时使用 easymock@Mock注释和@Rules 进行模拟?

版本:

0 投票
1 回答
62 浏览

java - 来自线程的 RunTimeException 未登录到 SystemErrRule

我正在尝试测试是否将线程抛出的 RunTimeException 添加到 System.err 中。但即使在等待 1 分钟后,也没有在 System.err 中找到以下代码片段

有人可以指出测试中可能出现的错误吗?