java - 为私有(private)方法的 NullPointerException 编写 junit 测试用例时出现问题

标签 java junit reflection private-methods

函数模板是

private static void processTextFile(String iFile, String tmpDirLoc, String tmpDrive, String iMode)

我想在 iFile 为 null 时测试 NullPointerException。 由于原始方法 processTextFile 本质上是私有(private)的,所以我在测试用例中使用反射来访问该方法,但我无法编写 AssertThrows 条件的测试用例。 请帮我写这个。

这是我的代码

    @Test()
    public void TC1_processTextFileTest() {
    Method method = crashParser.class.getDeclaredMethod("left",String.class,int.class);
    method.setAccessible(true);
    crashParser cp = new crashParser();
    String ifile=null;
    //cp.processTextFile(ifile,null,null,null);
    //NullPointerException ex= assertThrows(NullPointerException.class,()-> 
   //cp.processTextFile(ifile,null,null,null));
    //assertEquals("Array can't be null",ex.getMessage());
   }

最佳答案

不要为私有(private)方法编写单元测试,而是引用利用该私有(private)方法的公共(public)对象或方法来断言某些内部状态符合预期。

关于java - 为私有(private)方法的 NullPointerException 编写 junit 测试用例时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60951444/

相关文章:

java - JUnit 测试::assertEquals() 的问题

java - 如何通过内部对象创建进行 JUnit 测试

Selenium 和单点登录

c# - 如何使用反射调用泛型方法?

java - RoadModel.getDistanceOfPath(RoadModel.getShortestPath(Vehicle, Point)) 错误

java - 读取Oracle 10gas上的环境变量

reflection - 设置具有接口(interface)字段类型的结构体字段

当枚举位于类内部时,Java 枚举反射

java - HttpPost写入body以及请求参数

java - 使用 Windowbuilder 和 Java 显示双重使用文本?