Java 如何测试是否在代码路径中引发和处理异常?
我正在编写一个集成测试(不是模拟单元测试),以检查用户没有足够权限访问aws资源(比如S3 bucket)的用例的行为 下面是代码的外观:Java 如何测试是否在代码路径中引发和处理异常?,java,junit,junit5,Java,Junit,Junit5,我正在编写一个集成测试(不是模拟单元测试),以检查用户没有足够权限访问aws资源(比如S3 bucket)的用例的行为 下面是代码的外观: MyService svcClient = new MyService(permissions); 上面的行使用所有异常(例如,拒绝访问S3-S3Exception,返回空对象) 虽然我可以用以下方法测试行为 Assertions.assertThrows( NullPointerException.class, () -> svcClient.me
MyService svcClient = new MyService(permissions);
上面的行使用所有异常(例如,拒绝访问S3-S3Exception,返回空对象)
虽然我可以用以下方法测试行为
Assertions.assertThrows( NullPointerException.class, () -> svcClient.methodCall());
我无法表示有一个特殊的异常,如S3Exception,它是在消息访问被拒绝时引发的
问题:
非常感谢这里的指导。谢谢。除非您显示
MySingletonClass
代码,否则很难回答。此外,在您的情况下,如果您可以在MySingletonClass
类中的另一个方法中处理异常并对所有这些异常进行测试,那么单元测试就更容易了。这个问题与它的单例是否独立无关或者不是。我将更改问题的内容,使其更通用。您可以通过使用assertJ库断言自定义异常来实现这一点。这就是您要问的吗?不是。自定义异常是您所指的模拟异常。这是通过JUnit生成的集成测试,我无法模拟任何代码行,其中表示方法被称为模拟行为以引发特定的异常。除非您显示MySingletonClass
代码,否则很难回答。此外,在您的情况下,如果您可以在MySingletonClass
类中的另一个方法中处理异常并对所有这些异常进行测试,那么单元测试就更容易了。问题与我是否ts singleton与否。我将更改问题的内容,使其更通用。您可以通过使用assertJ库断言自定义异常来实现这一点。这就是您要问的问题吗?不。自定义异常是您所引用的模拟异常。这是通过JUnit生成的集成测试,我无法模拟任何代码行当调用模拟行为以引发特定异常时,正在初始化。