繁体   English   中英

在测试类(Junit)中调用 static 方法

[英]Calling static method in test class(Junit)

我正在为我的项目编写 junit 测试用例,但我面临一个问题这是我在我的 java class (GraphNodes.java) 中使用的一种方法

 public static ArrayList<String> getCSList() {
    System.out.println(CSList.size()); // Output : 3
    return CSList; // returns 3 elements in list
}

现在这是我对 Junit 的测试 class

@Test
public void checkCSListCount(){

 int actual= GraphNodes.getCSList().size(); // My exceptation here is 3 but in console it shows 0
 int excepted = 3;
 assertEquals(excepted,actual);  
 }

我的 junit 说异常<3> 但实际<0> 失败了我也无法将 static 方法更改为仅公开,因为它会影响代码的某些功能,而且由于我是 Z587FEFE304B8E3505DE8958042 的新手,所以我不知道如何修复this.so 任何人都可以在这里帮助我提前谢谢!

您需要验证在运行时如何填充 object CSList()并在运行测试时执行完全相同的操作。

一种选择是在您的测试中使用@BeforeEach method ,它将在测试期间设置您需要的值。

    @BeforeEach
    public void setUp() {
       GraphNodes.setCSList(Arrays.asList("A","B","C"));
    }


   @Test
   public void checkCSListCount(){

      int actual= GraphNodes.getCSList().size();
      int excepted = 3;
      assertEquals(excepted,actual);  
  }

我认为您正在尝试编写集成测试。 因此,在检查列表大小之前,您应该调用该方法,用您的 3 个元素填充列表。 如果所有逻辑都在您的 main 方法中,您应该将其提取到自己的方法中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM