草庐IT

Junit-Tests

全部标签

java - 标记为运行太长的 JUnit 测试失败

我想停止运行太长时间的junit测试并将其标记为失败(在Maven3构建中执行)。我知道三种方法:1)使用带有超时参数的Test注解:@Test(timeout=100)publicvoidtestWithTimeout(){...}2)使用规则注解:@RulepublicTimeoutglobalTimeout=newTimeout(100);3)使用以下选项配置maven-surefire-plugin:forkedProcessTimeoutInSeconds=1reuseForks=false线索是1)和2)需要更改每个测试(当您有数千个测试时会很痛)。3)解决方案是NotAc

java - 以更智能的方式在 Junit 5(或其他测试 Java 库)中使用数组参数化

我正在尝试参数化这个测试:@TestpublicvoidreverseQuote(double[]qsp)throwsException{...}在我看来,它不存在一些快速的方法来初始化数组qsp,例如ValueSource:@ParameterizedTest@ValueSource(ints={1,2,3})voidtestWithValueSource(intargument){assertNotNull(argument);}我的目标是执行@ValueSource(doublesArray={newdouble[]{1.0,2.0,3.0}})之类的操作(现在返回错误)。不存在

java - 在 JUnit 4.11 中结合 @ClassRule 和 @Rule

在JUnit4.10及更低版本中,可以将规则注释为@Rule和@ClassRule。这意味着规则在上课之前/之后以及每次测试之前/之后被调用。这样做的一个可能原因是设置一个昂贵的外部资源(通过@ClassRule调用),然后廉价地重置它(通过@Rule调用)。从JUnit4.11开始,@Rule字段必须是非静态的,@ClassRule字段必须是静态的,因此上述情况不再可行。显然有一些解决方法(例如,明确地将@ClassRule和@Rule职责分离为单独的规则),但必须强制使用两个规则似乎很可惜。我简要地查看了使用@Rule并推断它是否是第一个/最后一个测试,但我不相信该信息可用(至少,

java - Mockito、JUnit、Hamcrest、版本控制

默认情况下,Hamcrest所需的版本用于:JUnit4.11Hamcrest1.3Mockito-core1.9.5Hamcrest1.1Hamcrest1.1和1.3之间的API没有变化。目前我的测试用例尝试使用Hamcrest1.1运行JUnit4.11,但我合理surethatthisisabadidea.出于类似的原因,我怀疑尝试将Mockito-core1.9.5与Hamcrest1.3一起使用是alsoabadidea.怎么办?将Hamcrest1.1与最新的JUnit和Mockito结合使用将Hamcrest1.3与最新的JUnit和Mockito结合使用尝试修补Moc

java - 是否有任何方便的代码覆盖工具可与 JUnit 一起使用?

是否有方便的代码覆盖工具与JUnit一起使用? 最佳答案 我想大多数代码覆盖工具都可以很容易地与JUnit一起使用。以前我用过EMMA,这很好。如果您是Eclipse用户,有一个名为EclEmma的Eclipse插件。整合事物。 关于java-是否有任何方便的代码覆盖工具可与JUnit一起使用?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5269636/

java - 通过junit测试main方法

这个问题在这里已经有了答案:UsingJUnittotestamainmethodthatrequiressimulationofkeyboardinputwithaninputstream?(2个回答)JUnittestforSystem.out.println()(14个回答)关闭6年前。我写了一个类,它接受来自控制台的输入和主方法中的参数。main方法为不同的控制台输入调用不同的方法,并为不同的参数调用不同的函数。所以我想通过模仿文件中的这些输入来用Junit测试这个主要方法。我该怎么做?junit中是否有专门的规定来测试类的main方法? 最佳答案

java - JUNIT : run setup only once for a large number of test classes

我有一个类,我用它作为单元测试的基础。在这个类中,我为我的测试初始化​​整个环境,设置数据库映射,在多个表中输入许多数据库记录,等等。该类有一个带有@BeforeClass注释的方法来进行初始化。接下来,我使用具有@Test方法的特定类扩展该类。我的问题是,由于所有这些测试类的前级完全相同,我如何确保它们对所有测试只运行一次。一个简单的解决方案是我可以将所有测试放在一个类中。但是,测试的数量很大,而且它们是根据功能头进行分类的。因此它们位于不同的类中。但是,由于它们需要完全相同的设置,因此它们继承了@BeforeClass。因此,每个测试类至少完成一次整个设置,总共花费的时间比我希望的

java - junit assertEquals 忽略大小写

我刚从c#->java迁移。我需要使用junit编写一些测试。在我的测试中,我需要比较两个字符串以查看它们是否匹配。所以我们也有Assert.assertEquals,但这是区分大小写的。我怎样才能使它不区分大小写?我需要的是:"blabla".equals("BlabLA")返回真。所以在C#中,我们曾经有:publicstaticvoidAreEqual(stringexpected,stringactual,boolignoreCase,stringmessage)我正在快速浏览Junit文档,但我似乎找不到这样的东西。 最佳答案

java - mockito test 在作为 junit test 运行时没有给出这样的方法错误,但是当在运行配置中手动添加 jar 时,它运行良好

我一直面临一个特殊的问题。基本上,当我正常运行Mockito/PowerMockito测试时,即“作为Junit测试运行”时,它会给我以下错误:java.lang.NoSuchMethodError:org.mockito.mock.MockCreationSettings.isUsingConstructor()Zatorg.mockito.internal.creation.instance.InstantiatorProvider.getInstantiator(InstantiatorProvider.java:10)atorg.powermock.api.mockito.in

java - Junit 在我的测试用例中断言 OR 条件

在我的测试用例中,我得到一个整数值:intval=getXXX();然后,我想检查val是等于3还是等于5,这两种情况都可以。所以,我做到了:assertTrue(val==3||val==5);我运行测试,日志显示val为5,但我上面的断言代码失败并出现AssertionFailedError。看来我不能以这种方式使用assertTrue(...),那么,如何检查OR条件为真? 最佳答案 您可以使用Hamcrestmatchers在此处获得更清晰的错误消息:inti=2;assertThat(i,Matchers.either(M