几分钟前我就有了这个问题,但我想尝试别的东西。
\n例如我有这个方法:
\n//inside Number.java\npublic static int add(int nr1, int nr2) {\n return nr2 + nr2;\n}\n\nRun Code Online (Sandbox Code Playgroud)\n如你所见,我返回 number2 + number2
\n在我的测试中,我使用它会抛出预期为 9 的错误,而不是在 main 方法中计算的数字。
\n@Test\npublic void test() throws Exception {\n int nr1 = 4;\n int nr2 = 5;\n int sum = Number.add(nr1, nr2);\n assertEquals(9, sum);\n}\nRun Code Online (Sandbox Code Playgroud)\n我现在尝试这样做,以便在程序失败时收到一条消息,但它不会\xc2\xb4t 失败。
\n@Test\npublic void test() throws Exception {\n int nr1 = 4;\n int nr2 = 5;\n int sum = Number.add(nr1, nr2);\n \n try {\n assertEquals(9, sum);\n }catch(Exception e) {\n fail("Are you sure you calculate the right numbers?");\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n但程序只向我显示 AssertionError 而不是失败()中的消息
\n我现在知道我可以这样使用它:
\nassertEquals("...",9,sum);\nRun Code Online (Sandbox Code Playgroud)\n但我不想要这个断言错误:
\nexpected:<> but was <> \nRun Code Online (Sandbox Code Playgroud)\n在最后
\n实现.AssertionErrorError Throwable你的
catch(Exception e)
Run Code Online (Sandbox Code Playgroud)
没用,因为AssertionError不是Exception.
catch(AssertionError e)如果必须的话,可以直接使用 s 来捕获它,但通常Error不应该捕获它。
如果您确实想强制调用fail,请避免assertEquals并使用
if(sum != 9) {
fail("Are you sure you calculate the right numbers?");
}
Run Code Online (Sandbox Code Playgroud)
这完全避免了断言错误。