gpt4 book ai didi

java - 是否可以绕过单元测试中的某些异常?

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:47 25 4
gpt4 key购买 nike

是否有可能绕过 mockito 中的某些异常?这听起来很疯狂。您想在我假设的单元测试中捕获预期的异常。不过我决定尝试问这个问题。这是我的场景,希望我可以通过此提高对 mockito 和一般单元测试 主体的理解。

我必须使用 mockito 单元测试框架为企业 Web 应用程序中的特定类 Foo 构建一个简单的单元测试。

这个Foo类需要ldapdatabase连接,但是由于某种原因,我无法在单元测试中使用开发环境特定的ldapdatabase

我只需要测试访问ldap的部分,因此我决定在内存ldap中使用unboundid,它允许在运行时创建轻量级目录,并在测试完成后将其从内存中删除。

我的问题是在通过@InjectedMocks注释实例化Foo类期间,它触发了调用许多其他类及其方法的链式 react 。它抛出了许多我预料到的异常。

我正在尝试找到一种方法来忽略一些特定的异常,例如加载/读取环境特定的属性文件或数据库访问等。

为了实现我的目标,我不需要读取 prop 文件,也不需要访问数据库。

如果我没记错的话,我读到了ExpectedException junit 提供的内容,它是mockito 的子集,但我认为它的目标与我绕过某些异常的意图不符。我在这一点上可能是错的。

我想要完成的是:

  1. 实例化 Foo
  2. 调用其方法之一,从内存 ldap 读取组列表
  3. 验证返回的数据

这是测试类的淡化版本:

@RunWith(MockitoJUnitRunner.class)
public class FooTest {

private static InMemoryDirectoryServer ldapServer;
private static Integer ldapPort = xxxxx;

@InjectedMocks
Foo footester = Foo.getInstance();

@BeforeClass
public static void setUpBeforeClass() {
try {
// execute instantiate in memory ldap..
} catch (Exception e) {
// do print out
}
}

@Test
public void testLdap() {
// before it reaches here exceptions were thrown
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
// do tear down execution
}
}

最佳答案

你可以捕获这样的异常:

@Test(expected = YourExceptionHere.class)
public void testSomething()
{
foo(FOO_VALUE);
}

关于java - 是否可以绕过单元测试中的某些异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53767064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com