我有一个尝试获取某些文件的简单方法。我想测试文件何时不存在,这就是我的问题所在。测试不断失败。
该方法类似于:
public Configuration populateConfigs(Configuration config) throws UnRetriableException {
try {
....
} catch (IOException | ConfigurationException e) {
log.error(" getConfiguration : ", e);
throw new UnRetriableException(e);
}
throw new UnRetriableException("problem getting config files.");
}
在测试中,我尝试了两种单独的解决方案,但均未成功。
使用SO解决方案中建议的新样式
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testPopulateConfigurationMissing() throws Exception {
exception.expect(UnRetriableException.class);
DefaultConfigHandler configurationFactory = new DefaultConfigHandler(testDirectory, testFileThatIsNonExistant);
Configuration configuration = configurationFactory.populateConfiguration(systemConfig);
}
对于方法二,这就是我过去知道如何测试异常的方法。
@Test(expected = UnRetriableException.class)
public void testPopulateConfigurationMissing() throws Exception {
DefaultConfigHandler configurationFactory = new DefaultConfigHandler(testDirectory, testFileThatIsNonExistant);
Configuration configuration = configurationFactory.populateConfiguration(systemConfig);
}
实际上会引发异常,如下所示:
com.caricah.iotracah.exceptions.UnRetriableException: java.nio.file.NoSuchFileException: world/over
at com.caricah.iotracah.system.handler.impl.DefaultConfigHandler.populateConfiguration(DefaultConfigHandler.java:137)
at com.caricah.iotracah.system.handler.impl.DefaultConfigHandlerTest.testPopulateConfigurationMissingDirectory(DefaultConfigHandlerTest.java:137)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
因此,我的问题是,要通过测试,我还需要做什么?
当然无需使用junit3捕获异常的方式。
刚刚测试过,可以按预期工作…上课…
public class SomeClass {
public void someMethod(String someParameter) throws SomeException {
throw new SomeException("Yep, really a SomeException");
}
}
例外…
public class SomeException extends Exception {
public SomeException(String message) {
super(message);
}
}
和测试类一样,两个测试完全按预期工作:
public class TestSomeClass {
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testSomeMethodWithRule() throws SomeException {
exception.expect(SomeException.class);
new SomeClass().someMethod("something");
}
@Test(expected=SomeException.class)
public void testSomeMethodWithExpected() throws SomeException {
new SomeClass().someMethod("something");
}
}
下载完您的项目(请参阅注释)后,我不确定 为什么 ,但是我知道问题 出 在哪儿:这是extends Testcase
。我假设这会以某种方式导致执行单元测试的不同方式(stacktrace意味着它们将通过JUnit38ClassRunner
then
执行)。删除它(无论如何您都不需要它)Assert.<something>
,例如,使用调用断言Assert.assertTrue(...)
。(您也可以为此使用静态导入,因此不必编写Assert部分)。那解决了您的问题,所有测试都成功。
另一种可能性似乎是保留extends TestCase
和使用@RunWith(BlockJUnit4ClassRunner.class)
,这也可以解决您的问题,因此TestCase的默认Runner可能不适合它。
在为 Glide 报告 bug 的时候,如果您能同时提供一个 Pull Request 包含失败的测试用例 (failing test case) 以演示你正在报告的问题,会对我们很有帮助。失败测试用例可以协助避免交流问题,使维护者容易复现问题,并可在一定程度上提供在将来不再复现该问题的一些保障。 这个指南将手把手地带您撰写一个失败测试用例。 初始化设置 在编写任何代码之前,你需要有少许的一些前置
我最近开始测试基于rest的web服务。我想知道测试它们时面临的常见问题是什么。 我通常会寻找 > 响应状态(http代码在200/400/500之间) 响应头(缓存控件、响应类型、内容长度) 如果 json 响应中存在预期的字段/值。 我想知道在测试基于Rest的Web服务时还需要寻找什么和一般问题
我试图学习如何在spring中使用Java8进行单元测试/mockito测试,但遇到了一些问题。我试图测试我的方法findUserById,但它一直运行false。可选类型问题是一个问题,但可能已经解决了这些问题。然而,它仍然是错误的。我的其他测试都是有效的,所以这只是一个顽固的测试。我将感谢你的帮助。
我正在LinuxCLI模式下对两台从机进行远程测试。我已经在主机和从机上设置了如下的rmi端口。我可以从主从机远程登录到端口8080/1099,反之亦然。防火墙已为这些端口打开。 jmeter.properties:client.rmi.localport=1099 jmeter.properties:server.rmi.localport=8080 我在主节点和从节点上启动了 jmeter 服
问题内容: 我编写了使用文本协议接受连接和轰炸消息(〜100字节)的服务器,并且我的实现能够与3rt客户端发送约400K / sec的回送消息。我为此任务选择了Netty,即SUSE 11 RealTime,JRockit RTS。但是,当我开始基于Netty开发自己的客户端时,吞吐量却急剧下降(从400K msg / sec降低到1.3K msg / sec)。客户端的代码非常简单。能否请您提供
我得到低于错误,而运行基准测试使用与默认设置的标尺。 <17:26:41>未能设置基准驱动程序(将关闭并退出)。类org.apache.ignite.igniteCheckedException:无法启动管理器:GridManagerAdapter[enabled=true,name=org.apache.ignite.internal.managers.discovery.gridDiscove