我有一个带有类foo的java8应用程序:importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassFoo{privatefinalLoggerlog=LoggerFactory.getLogger(Foo.class);publicStringsomething(){log.info("doingfootest");return"test";}}我正在为此编写一个JUnit(Junit4.11)测试用例:publicclassFooTest{privateFoofoo;@BeforepublicvoidsetUp(
我有一些JUnit测试包含在.jar中,旨在用作库。该库包含一些在另一个项目中使用该库时应运行的测试。然而,当我使用库创建一个新项目并在Eclipse中运行JUnit时,依赖项.jar中的测试不会运行/不会被JUnit测试运行器检测到.我收到消息:Notestsfoundwithtestrunner'JUnit4'.有没有一种方法可以配置依赖项.jar,以便测试将与可能包含在主项目中的任何测试一起运行?基本上,我希望依赖项.jar将测试“导出”到使用它的任何项目。我使用EclipseJuno、JUnit4.10和Maven进行依赖管理。编辑:这个库的目的是能够帮助测试使用它的项目——即
我很生气地在Parameterizeddocumentation中找到“在运行参数化测试类时,会为测试方法和测试数据元素的叉积创建实例。”这意味着构造函数为每个测试运行一次,而不是在运行所有测试之前。我在构造函数中放入了一个昂贵的操作(1-5秒),现在该操作重复了太多次,不必要地减慢了整个测试套件。该操作只需一次即可为所有测试设置状态。如何使用参数化测试的一个实例运行多个测试? 最佳答案 我会将昂贵的操作移至@BeforeClass方法,该方法在整个参数化测试中应该只执行一次。下面是一个愚蠢的例子:@RunWith(Paramete
运行时:publicstaticvoidmain(String...args)throwsInterruptedException{while(true){System.out.print(".");Thread.sleep(200);}}对比从junit运行相同的代码时:@Testpublicvoidtest()throwsException{while(true){System.out.print(".");Thread.sleep(200);}}有不同的行为:对于main()-当进程运行时,输出按预期显示("."->".."->"...")但是,对于JUnit,当运行同一段代码时
如何获取JUnit5中测试方法的名称? 最佳答案 在你的测试方法和JUnitwillautomaticallysupplyaninstance中声明一个TestInfo类型的参数方法的一部分:@TestvoidgetTestInfo(TestInfotestInfo){//AutomaticallyinjectedSystem.out.println(testInfo.getDisplayName());System.out.println(testInfo.getTestMethod());System.out.println(t
我正在使用JUnit4.10来运行测试套件,并且我已经按照MatthewFarwell在HowtoRe-runfailedJUnittestsimmediately?中的出色说明实现了“重试失败测试”规则。邮政。我使用以下代码创建了一个类“RetryTestRule”:publicclassRetryTestRuleimplementsTestRule{privatefinalintretryCount;publicRetryTestRule(intretryCount){this.retryCount=retryCount;}@OverridepublicStatementapply
我有几个测试用例,JUnit告诉我在10000毫秒后超时,而整个测试运行仅持续几秒钟。这是输出:Testsrun:3,Failures:0,Errors:2,Skipped:0,Timeelapsed:2.528sec当整个测试运行仅持续4.3秒时,我的测试似乎不太可能因为运行时间超过10(或50)秒而超时。:)这是我用来运行测试的POM中的surefire配置:org.apache.maven.pluginsmaven-surefire-plugin${maven-surefire-plugin.version}provided**/*Tests.*有没有人对为什么会发生这种情况有任
Eclipse向我发出警告,指出Assert类型的方法assertEquals(Object[],Object[])已弃用。我正在使用JUnit4。我在Eclipse中写了如下代码:importorg.junit.Test;importorg.junit.Assert;publicclassGenerics{publicT[]genericArraySwap(T[]list,intpos1,intpos2)throwsIndexOutOfBoundsException{...}@TestpublicvoidgenericArraySwapTest(){Integer[]IntegerL
我正在通过ant运行我的junit测试,它们的运行速度比通过IDE慢得多。我的Ant电话是:通过Ant运行时,在我的IDE中几乎瞬时运行的相同测试(0.067秒)需要4.632秒。过去,我已经能够通过使用junitfork参数来加速像这样的测试问题,但这在这种情况下似乎没有帮助。我可以查看哪些属性或参数来加快这些测试?更多信息:我使用的是来自IDE的报告时间与junit任务输出的时间。这不是Ant运行结束时报告的总时间。奇怪的是,这个问题已经自行解决了。是什么导致了这个问题?系统在本地磁盘上运行,所以这不是问题。 最佳答案 这是一个
我有一个看起来像这样的函数:privateTimertimer=newTimer();privatevoiddoSomething(){timer.schedule(newTimerTask(){publicvoidrun(){doSomethingElse();}},(1000));}我正在尝试为我的代码编写JUnit测试,但在特别测试这段代码时,它们的行为不如预期。通过使用EclEmma,我能够看到我的测试从未触及doSomethingElse()函数。我如何在JUnit中编写测试,等待足够长的时间让TimerTask完成,然后再继续测试? 最佳答案