当前位置: 首页 > 知识库问答 >
问题:

Junit 4ExpectedException.ExpectMessage应该测试失败,但它没有

屠坚壁
2023-03-14
public class MyClassTest {
@Rule
public ExpectedException thrown = ExpectedException.none();

@Test
public void testMyMethod() throws Exception {
    // Test 1
    String[] args = ...;
    MyClass.myMethod(args);

    // Test 2
    thrown.expect(InvalidParamException.class);
    thrown.expectMessage("exceptionString 1");
    args = ...;
    MyClass.myMethod(args);

    // test 3
    thrown.expect(InvalidParamException.class);
    thrown.expectMessage("exceptionString 2");
    args = ...;
    MyClass.myMethod(args);
}

共有1个答案

赫连彬炳
2023-03-14

ExpectedException仅保存1个预期异常。

你不能这样重复使用。要么:

  1. 将测试用例拆分为3个单独的测试用例;
  2. 有3个ExpectedException实例;
  3. 使用普通旧版尝试/捕捉
  4. 如果您使用的是最新版本的Java(8+)和支持它的JUnit,请使用assertthrows(或expectthrows)。
 类似资料:
  • 我的Junit测试使用DBUnit,从Eclipse运行时运行良好。但是,使用Maven运行相同的测试会导致以下一项测试失败: 我已经连续几次尝试从EclipseGUI(“作为JUnit测试运行”)运行该测试和整个测试集,但它们从未失败——但从Maven来看,它们确实失败了。 我对每个测试都使用@数据库设置,但这足以真正重置数据库吗?我还认为Maven可能会并行运行测试,所以我尝试在pom.xml

  • 我有一个maven项目,它有一个名为“BlahITCase”的集成测试。该测试目前失败,进而导致“mvn安装”失败。这是预期的行为吗?我的理解是,单元测试(surefire)失败会导致构建失败,但集成测试(使用故障保护)失败不会。 我在我的pom的构建插件部分有以下内容: 注释出验证目标似乎给了我想要的行为。

  • 我有一个内部使用Akka的Spring MVC应用程序。其中一个参与者正在调用已使用MockRestServiceServer模拟的REST服务。当我运行调用控制器和有趣的参与者的测试时,即使内部抛出异常,测试也会通过。 我在日志中看到以下异常堆栈跟踪。在测试用例中,我还在验证模拟服务器(mockRestServiceServer.verify())之前放入了一个Thread.sleep(5000

  • 我有一个简单的功能,我想测试,但明显的结果是没有发生。。。 我的函数是如何工作的(实际上它确实工作,只是没有正确测试) 我将字符串传递到函数中 当我运行所示的测试时,我收到错误: 预期默认值等于hare失败 我的组件 我的测试

  • 我正在尝试在Windows 8 Professional(64位)笔记本电脑上安装TestCular(使用nmp),但在尝试安装socket.io(作为此过程的一部分)时失败。我得到的错误是 我显然有。NET框架3.5安装(它在控制面板中的添加/删除Windows组件位下检查),尽管我没有设法找到vcbuild.exe.我尝试安装VS2005的旧副本,但这导致了一个关于无效项目的不同错误(. vc

  • 我有一个测试,在詹金斯内部运行时总是失败。 我的项目包括Selenium webdriver、JAVA、Maven、TestNG、Jenkins和Allure(reports)。我有几个包含100个测试用例的测试套件,我通过3种不同的浏览器对它们进行迭代(这些测试使用TestNG并行运行)。它们都运行(使用maven命令行)并传入我的开发笔记本电脑,使用命令行时在测试服务器上运行。 我有两个关于J