我正在编写使用TemporaryFolder规则的JUnit4测试。似乎它适用于@Rule和@ClassRule。Junit@Rule和@ClassRule有什么区别?为什么我应该使用一个而不是另一个? 最佳答案 当你在一个类中有多个测试方法时,区别就变得很明显了。@ClassRule的before()方法在任何测试方法之前运行。然后运行所有的测试方法,最后是规则的after()方法。因此,如果您在一个类中有五个测试方法,before()和after()仍然只会运行一次。@ClassRule适用于静态方法,因此具有其中固有的所有限制
我使用在Junit测试用例中运行的嵌入式服务器。有时这些服务器需要一个工作目录(例如ApacheDirectory服务器)。Junit4.7中的新@Rule可以处理这些情况。TemporaryFolder-Rule可以创建一个临时目录。可以为服务器创建自定义ExternalResource-Rule。但是如果我想将结果从一个规则传递到另一个规则,我该如何处理:importstaticorg.junit.Assert.assertEquals;importjava.io.*;importorg.junit.*;importorg.junit.rules.*;publicclassFold
我使用在Junit测试用例中运行的嵌入式服务器。有时这些服务器需要一个工作目录(例如ApacheDirectory服务器)。Junit4.7中的新@Rule可以处理这些情况。TemporaryFolder-Rule可以创建一个临时目录。可以为服务器创建自定义ExternalResource-Rule。但是如果我想将结果从一个规则传递到另一个规则,我该如何处理:importstaticorg.junit.Assert.assertEquals;importjava.io.*;importorg.junit.*;importorg.junit.rules.*;publicclassFold
这个问题在这里已经有了答案:Excludinganonparamtestinparameterizedtestclass(9个回答)关闭5年前.我在很多情况下使用@Parameterized来对多个排列进行测试。这工作得很好,并且使测试代码本身保持简单和干净。但是有时我希望某些测试方法仍然只运行一次,因为它们不使用参数,JUnit有没有办法将测试方法标记为“单例”或“运行-一次”?注意:这与在Eclipse中运行单个测试无关,我知道该怎么做:) 最佳答案 您可以使用Enclosedrunner构建您的测试。.@RunWith(Enc
这个问题在这里已经有了答案:Excludinganonparamtestinparameterizedtestclass(9个回答)关闭5年前.我在很多情况下使用@Parameterized来对多个排列进行测试。这工作得很好,并且使测试代码本身保持简单和干净。但是有时我希望某些测试方法仍然只运行一次,因为它们不使用参数,JUnit有没有办法将测试方法标记为“单例”或“运行-一次”?注意:这与在Eclipse中运行单个测试无关,我知道该怎么做:) 最佳答案 您可以使用Enclosedrunner构建您的测试。.@RunWith(Enc
我有一个在Android中发送状态栏通知的类。我找不到测试通知是否发送的方法,这使得编写任何有用的单元测试变得非常困难。有人对此有解决方案吗? 最佳答案 也许不是您正在寻找的答案,但像往常一样,解决方案是:创建一个抽象通知功能的接口(interface)。创建一个委托(delegate)给系统通知API的默认实现。在运行测试时,使用支持测试的模拟实现替换(或修饰)默认实现。这可以通过以下技术来简化:依赖注入(inject)框架(如RoboGuice)来简化实现的选择。用于自动创建模拟实现的模拟库(如EasyMock)。
我有一个在Android中发送状态栏通知的类。我找不到测试通知是否发送的方法,这使得编写任何有用的单元测试变得非常困难。有人对此有解决方案吗? 最佳答案 也许不是您正在寻找的答案,但像往常一样,解决方案是:创建一个抽象通知功能的接口(interface)。创建一个委托(delegate)给系统通知API的默认实现。在运行测试时,使用支持测试的模拟实现替换(或修饰)默认实现。这可以通过以下技术来简化:依赖注入(inject)框架(如RoboGuice)来简化实现的选择。用于自动创建模拟实现的模拟库(如EasyMock)。
关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion这可能是一个幼稚的问题,但我对junit和hibernate框架都是新手,我想知道对主要调用hibernate的应用程序进行单元测试的最佳方法是什么,或者是否有必要这样做?这里的最佳做法是什么?编辑:Spring似乎是这里的大建议。不幸的是,这对于一个项目来说可能有点太多了。Junit、Hibernate和Spring对我来说都是新事物,虽然它们都是我想掌握的技术,但我认为尝试将它们全部整合到一个项目中
关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion这可能是一个幼稚的问题,但我对junit和hibernate框架都是新手,我想知道对主要调用hibernate的应用程序进行单元测试的最佳方法是什么,或者是否有必要这样做?这里的最佳做法是什么?编辑:Spring似乎是这里的大建议。不幸的是,这对于一个项目来说可能有点太多了。Junit、Hibernate和Spring对我来说都是新事物,虽然它们都是我想掌握的技术,但我认为尝试将它们全部整合到一个项目中
如何使用JUnit测试在现有项目中运行JMH基准测试?官方文档建议制作一个单独的项目,使用Mavenshade插件,并在main方法中启动JMH。这是必要的吗?为什么推荐它? 最佳答案 我一直在使用JUnit在我现有的Maven项目中运行JMH,没有明显的不良影响。我无法回答为什么作者建议以不同的方式做事。我没有观察到结果的差异。JMH启动一个单独的JVM来运行基准测试以隔离它们。这是我的工作:将JMH依赖项添加到您的POM:org.openjdk.jmhjmh-core1.21testorg.openjdk.jmhjmh-gene