草庐IT

java - JUnit 测试中的假设与断言

我读过如果假设失败,assume将不会运行测试,但我不确定何时放置assert与assume的逻辑。例如:任何资源加载检查都应该用assume来完成吗?什么时候应该使用assume而不是assert?(注意:我正在寻找何时使用一个而不是另一个的正确设计) 最佳答案 如果您遇到某些测试根本不应运行的情况,您可以使用assume。“未运行”意味着它不会失败,因为它没有运行。如果出现问题,您可以使用assert使测试失败。因此,在一个假设的场景中:您为不同的客户提供不同的构建,并且您拥有一些仅适用于特定客户的资源,并且该资源有一些可测试的

java - 线程在 JUnit 中表现异常

我正在尝试编写需要多线程的单元测试。但是,线程似乎只是在执行过程中停止了一部分。考虑以下代码:publicclassTest{@org.junit.TestpublicvoidTestThreads(){newThread(newRunnable(){publicvoidrun(){for(inti=1;i如果我运行这个单元测试,它通常会在140-180之间的某个位置停止显示输出。如果我将此代码转换为常规类并运行它,它就可以正常工作。有人知道我在这里缺少什么吗?谢谢,-安德鲁。 最佳答案 您可以使用Thread.join()来防止测

java - JUnit 和 Clojure 单元测试

我正在创建一个包含Clojure和Java代码的库,并且希望能够在整个代码库中运行单个测试JUnit套件。看起来这应该是可能的,因为它们都在JVM上运行并且有很好的Clojure/Java互操作性。但是,目前Clojure代码似乎更倾向于使用“(run-all-tests)”和friend通过clojure.testAPI完成单元测试。有没有一种好方法可以将这些Clojure测试包装在某种包装器中,以便可以从JUnit自动调用它们?(当我说自动时,我的意思是无需诉诸编写JUnit测试用例的手动解决方案来单独包装和调用每个Clojure测试用例:-)) 最佳答

java - 为什么不删除 JUnit TemporaryFolder?

JUnit'sTemporaryFolderrule的文档声明它创建的文件和文件夹是"guaranteedtobedeletedwhenthetestmethodfinishes(whetheritpassesorfails)"但是,断言TemporaryFolder不存在会失败:importstaticorg.junit.Assert.*;importorg.junit.After;importorg.junit.Before;importorg.junit.Rule;importorg.junit.Test;importorg.junit.rules.TemporaryFolder

java - 在 Android JUnit 测试中加载 native 库

我使用ndk-build生成了一个本地库我可以在我的Android应用程序中加载和使用它。但是,我想针对我的应用程序的这一部分编写一些测试。在我的测试中调用native函数时,我收到此异常消息:java.lang.UnsatisfiedLinkError:noprocessinjava.library.path...哪里process是我要导入的原生库,名为libprocess.so.我正在使用Roboelectric进行测试,并使用RobolectricTestRunner运行这个特定的测试,如果它有所作为。如何让我的测试项目“看到”native库?编辑:我正在像这样在我的应用程序中

java - AspectJ 的 JUnit 测试

我正在尝试为自定义方面编写Junit测试。这是方面类片段:@Aspect@ComponentpublicclassSampleAspect{privatestaticLoggerlog=LoggerFactory.getLogger(SampleAspect.class);@Around("execution(*org.springframework.data.mongodb.core.MongoOperations.*(..))||execution(*org.springframework.web.client.RestOperations.*(..))")publicObject

java - 如果抛出 JUnit ExpectedException 后如何继续测试?

我已经设置了一些具有ExpectedException功能的JUnit(4.12)测试,我希望测试在出现预期异常后继续。但是我从来没有看到日志“3”,因为执行似乎在异常之后停止,如果捕获事件?这真的可能吗?如何实现?@RulepublicExpectedExceptionexception=ExpectedException.none();@TestpublicvoidtestUserAlreadyExists()throwsException{log.info("1");//CreatesomeusersuserService.createUser("toto1");userServ

java - 为什么不推荐使用 JUnit MethodRule 和 TestWatchman?

org.junit.rules.MethodRule和org.junit.rules.TestWatchman已被弃用。一个有趣的注释在:https://github.com/junit-team/junit/pull/519,部分:“许多开发人员坚持使用MethodRule是正当理由,而JUnit团队没有计划取消对MethodRule的支持……”http://junit-team.github.io/junit/javadoc/4.10/org/junit/rules/TestWatchman.html文件:“已弃用。MethodRule已弃用。改为使用TestWatcher实现Te

java - org.junit.Assert.assertThat 比 org.hamcrest.MatcherAssert.assertThat 好吗?

我是JUnit和Hamcrest的新手,希望获得最佳实践建议,以便我可以决定首先研究哪些文档。对于初学者来说,这些assertThat方法中哪个更好?org.junit.Assert.assertThat(来自junit-4.11.jar)org.hamcrest.MatcherAssert.assertThat(来自hamcrest-core-1.3.jar)据一个人说,去年,"JUnithastheassertThatmethod,buthamcresthasitsownassertThatmethodthatdoesthesamething.".根据今年早些时候的消息,Hamcr

java - 在忽略不相关类中的编译错误的同时在 IntelliJ 中运行 JUnit?

在IntelliJ中运行JUnit测试用例时,它会打开Make控制台并显示不相关类中的复杂错误。我可以忽略这些错误来运行测试用例吗?有没有办法让它在运行测试用例时不编译整个项目,只编译测试用例需要的类文件? 最佳答案 是的,你可以。您可以禁用MakebeforeRun。(以下是为IntelliJ14编写的,不同版本的布局可能略有不同,但据我所知,这些选项已经有一段时间是相同的)对于单个测试转到“运行”-“编辑配置...”选择测试用例的配置在名为“Configuration”的选项卡中,有一个“BeforeLaunch”列表,其中包含