草庐IT

java - 我们可以使用 JUNIT 进行自动化集成测试吗?

如何实现自动化integrationtesting?我使用JUnit进行其中一些测试。这是解决方案之一还是完全错误?你有什么建议? 最佳答案 我使用JUnit进行了很多集成测试。当然,集成测试可能意味着许多不同的东西。对于更多的系统级集成测试,我更喜欢让脚本从外部驱动我的测试过程。对于使用http和数据库的应用程序,这是一种非常适合我的方法,我想验证整个堆栈:在内存模式中使用Hypersonic或H2作为数据库的替代品(这对ORM最有效)在@BeforeSuite或等效项中初始化数据库(同样:使用ORM最简单)使用Jetty启动进程

java - 在方法级别(不是类级别)指定 junit 4 测试的顺序

我知道这是不好的做法,但必须这样做,否则我需要切换到testng。有没有一种类似于JUnit3的testSuite的方法来指定要在一个类中运行的测试的顺序? 最佳答案 如果您确定您真的想要这样做:可能有更好的方法,但这是我能想到的全部...JUnit4有一个注解:@RunWith,它允许您覆盖测试的默认Runner。在您的情况下,您可能希望创建BlockJunit4ClassRunner的特殊子类,并覆盖computeTestMethods()以按照您希望它们执行的顺序返回测试。例如,假设我想按字母倒序执行我的测试:publiccl

java - Junit 参数化测试与 Powermock 一起 - 如何?

我一直试图弄清楚如何在Junit4中与PowerMock一起运行参数化测试。问题是要使用PowerMock,你需要用装饰你的测试类@RunWith(PowerMockRunner.class)并且要使用参数化测试,您必须使用进行装饰@RunWith(Parameterized.class)据我所见,它们似乎相互排斥!?这是真的?有没有办法解决?我试图在使用PowerMock运行的类中创建一个参数化类;像这样:@RunWith(PowerMockRunner.class)classMyTestClass{@RunWith(Parameterized.class)classParamTes

java - 将命令行参数传递给以编程方式运行的 JUnit 测试用例

我正在尝试从Java类运行JUnit测试:JUnitCorecore=newJUnitCore();core.addListener(newRunListener());core.run(classToRun);问题是我的JUnit测试需要一个当前在JUnit测试本身中硬编码的数据库连接。我正在寻找一种以编程方式(上图)运行JUnit测试的方法,但将数据库连接传递给它,该连接是我在运行测试的Java类中创建的,而不是在JUnit类中硬编码。基本上是这样的JUnitCorecore=newJUnitCore();core.addListener(newRunListener());cor

java - 如何在 Eclipse 中为新的 JUnit 测试默认源文件夹?

我们的大部分Eclipse项目都有多个源文件夹,例如:src/main/javasrc/test/java当您右键单击一个类并选择NewJUnitTest时,新测试的默认源文件夹是“src/main/java”(可能是项目属性中列出的第一个源文件夹)。有什么方法可以更改新JUnit测试的默认源文件夹,以便当我执行上述操作时,默认情况下会在“src/test/java”文件夹中创建新测试? 最佳答案 我使用moreUnit,一个帮助编写单元测试的Eclipse插件。除其他功能外,它还允许您配置测试的默认源文件夹。

java - 将单元测试标记为 JUnit 中的预期失败

如何在JUnit4中将测试标记为预期失败?在这种情况下,我想继续运行这个测试,直到上游修补了某些东西。忽略测试有点过分,因为那时我可能会忘记它。我也许可以添加一个@expected注释并捕获assertThat抛出的异常,但这似乎也与预期的行为有关。这是我当前的测试结果:@TestpublicvoidunmarshalledDocumentHasExpectedValue(){doc=unmarshaller.unmarshal(getResourceAsStream("mydoc.xml"));finalSTtitle=doc.getTitle();assertThat(doc.ge

java - 对 JUnit 测试进行分组

有没有办法在JUnit中对测试进行分组,以便我只能运行一些组?或者是否可以注释一些测试然后全局禁用它们?我正在使用JUnit4,我无法使用TestNG。编辑:@RunWith和@SuiteClasses效果很好。但是有可能像这样只注释测试类中的一些测试吗?还是我必须注释整个测试类? 最佳答案 JUnit4.8支持分组:publicinterfaceSlowTests{}publicinterfaceIntegrationTestsextendsSlowTests{}publicinterfacePerformanceTestsext

java - JUnit 测试——分析预期的异常

这个问题在这里已经有了答案:InJavahowcanIvalidateathrownexceptionwithJUnit?(10个回答)关闭6年前。在JUnit中,我目前正在使用注解来预期我的测试中会出现异常。有没有办法分析这个异常?例如,我期望一个CriticalServerException,但我也想验证getMessage方法的内容。 最佳答案 如果您有JUnit4.7或更高版本,请尝试ExpectedExceptionthisquestion中有一个例子,复制如下:@RulepublicExpectedExceptionex

java - JUnit:可能 'expect' 包装异常?

我知道可以在JUnit中定义'expected'异常,这样做:@Test(expect=MyException.class)publicvoidsomeMethod(){...}但是,如果总是抛出相同的异常,但使用不同的“嵌套”呢?原因。有什么建议吗? 最佳答案 从JUnit4.11开始,您可以使用ExpectedException规则的expectCause()方法:importstaticorg.hamcrest.CoreMatchers.*;//...@RulepublicExpectedExceptionexpectedEx

java - 如何通过 JUnit 测试拦截 SLF4J(带 logback)日志记录?

是否有可能以某种方式拦截日志记录(SLF4J+logback)并通过JUnit测试用例获取InputStream(或其他可读的内容)...? 最佳答案 Slf4jAPI没有提供这种方式,但Logback提供了一个简单的解决方案。您可以使用ListAppender:一个白盒logbackappender,其中日志条目被添加到publicList字段中,我们可以使用它来进行断言。这是一个简单的例子。Foo类:importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassF