gpt4 book ai didi

java - 使用异常过滤器和 expectedExceptions 注释的 Seam 单元测试

转载 作者:行者123 更新时间:2023-11-30 09:56:35 25 4
gpt4 key购买 nike

我有一个针对 Seam 组件的单元测试,如果在创建支持 bean 之前没有在上下文中提供值,它应该会失败。我已经能够手动测试这个,但想用单元测试来覆盖这个场景。

当 Seam 尝试创建支持 bean 时,我基本上得到了由 java.lang.IllegalArgumentException 引起的 org.jboss.seam.InstantiationException。这很好,也是我期望发生的事情。问题是,当我编写单元测试时,我既不能在 new FacesRequest(..) {}.run(); 周围放置 try/catch,也不能使用 expectedExceptions 注释。在这两种情况下,异常都没有被捕获并导致测试失败。我假设这是因为 Seam 的异常过滤器,但我对过滤器的了解还不够多,无法知道测试它的正确模式是什么......

我的带有注解的代码看起来像这样:

// also tried IlligalArgumentException here
@Test( enabled = true, expectedExceptions = InstantiationException.class )
public void noDataTest() throws Exception
{
login( USERNAME );

// the stack trace says that the test fails on the next line.
// this is expected.
new FacesRequest( "/blah/blah/show.xhtml" ) {

@Override
protected void updateModelValues() {
}

@Override
protected void invokeApplication()
{
// we should never get here
// i'll put an failure here eventually
}
}.run();
}

最佳答案

我找到了答案。希望这可以帮助其他正在用头撞墙的人..

我正在寻找一个特定的异常,但 Seam 捕获了那个异常,断言发生了错误,然后抛出一个 java.lang.AssertionError(java.lang.Error,不是 java.lang.Exception)。捕获正确的 Throwable 并在注释中使用正确的类型现在可以工作了。

关于java - 使用异常过滤器和 expectedExceptions 注释的 Seam 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285413/

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