问题标签 [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.
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.)
java - 将 CLASSPATH 更改为 JUNIT_HOME/junit-4.12.jar,java 命令停止工作
当我将CLASSPATH
变量更改为JUNIT_HOME/junit-4.12.jar
系统变量时,我的 Java 命令停止工作。
例如,当我想执行一个类文件时,我收到错误“无法找到或加载主类”,但javac
工作正常。
当我删除 时CLASSPATH
,该java
命令再次开始工作。
java - java.lang.IllegalStateException:尚未创建临时文件夹
我正在@Rule
为我的用例创建一个新的看起来像
在我的Test
我用它作为
当我运行这个测试时,我得到错误
好像在创建自己的时候@Rule
,我不能依赖任何现有的@Rule
是这个问题吗?我该如何解决?
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 测试时得到了两个孩子。
我做错了什么,为什么层次结构看起来与正常使用中的层次结构如此不同?
java - 如何创建带有子文件夹的 JUnit TemporaryFolder
我想创建一个代表这种树的 baseFolder 的 JUnit TemporyFolder:
据我了解,我可以设置一个 TemporaryFolder,然后可以使用位于该文件夹中的“newFolder()”伪文件夹创建。但是我怎样才能在下面创建图层呢?特别是在测试后清理的方式。
java - 预期的异常和预期的消息不在循环中工作
大家好,我正在对 Spring MVC 项目进行 Junit 测试。这里是下面的代码
待测方法
我正在测试它的正面和负面情况。
这是我的负面测试用例
在这里,我尝试输入错误的用户 ID 并期望抛出运行时异常。代码工作正常,它会随消息一起引发期望。但问题是它只为第一个输入调用一次,其他输入值不被执行。我怎样才能让它循环工作?注意:Junit 测试用例通过并显示绿色条。
我已经更改了代码,但这也不适用于循环。我在哪里做错了??
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 测试示例,我打算就此提出一个单独的问题。
java - JUnit 似乎没有调用我重写的 TestWatcher 失败/成功方法
注意:MyTest 的代码已更新以反映我找到的答案,这是由 JUnit 生态系统中可用的多个 assertEquals() 实现引起的。
我在 C 中看到过类似的问题,但没有答案/响应。我要么在实现上左转,要么忽略了一些简单的事情。所以...
我希望在控制台上看到“IT FAILED”和“IT PASSED”,但并不高兴。只有“testFailure()”和“testSuccess()”输出。
TestRunner 实现
测试实现
TestWatcher 实现
easymock - 从 JUnit 4.10 到 4.11 的 Unitils EasyMock 和 JUnit @Rule
我有一个问题,当我@Rule
为我使用 JUnit 的注释TemporaryFolder
并想同时使用Mock
s时,我在4.11 中unitils.easymock
得到了一个,而在4.10 中它仍然有效。IlleagalStateException
JUnit
JUnit
因此,以下测试在 JUnit 4.10 下运行并IllegalStateException
在 4.11 中抛出:
即使我使用模拟功能的注释而不是extends UnitilsJUnit4
它在 JUnit 4.11 中不起作用:
测试此代码时的错误消息是:
我刚刚还发现了一些新的东西:在 JUnit 4.10 中,在newFile()
调用中传递字符串时,我也可以强制执行相同的错误:
我的问题:
在 JUnit 4.11中,使TemporaryFolders
or @Rule
s 通常与 s 一起工作的正确方法是什么?unitils.easymock.annotation.Mock
还是不能同时使用 easymock@Mock
注释和@Rule
s 进行模拟?
版本:
java - 来自线程的 RunTimeException 未登录到 SystemErrRule
我正在尝试测试是否将线程抛出的 RunTimeException 添加到 System.err 中。但即使在等待 1 分钟后,也没有在 System.err 中找到以下代码片段
有人可以指出测试中可能出现的错误吗?