Java 在测试类(Junit)中调用静态方法

Java 在测试类(Junit)中调用静态方法,java,junit4,Java,Junit4,我正在为我的项目编写junit测试用例,但我面临一个问题 下面是我在一个java类(GraphNodes.java)中使用的一个方法 我的junit说“例外但实际”失败了 另外,我不能将静态方法更改为仅public,因为它会影响代码的某些功能,而且因为我是junit新手,所以我不知道如何解决这个问题。所以这里有人能帮我吗 提前谢谢 我认为您正在尝试编写集成测试。因此,在检查列表大小之前,应该调用用3个元素填充列表的方法。如果所有的逻辑都在主方法中,您应该将其提取到自己的方法中。您需要验证在运行时

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

我的junit说“例外但实际”失败了 另外,我不能将静态方法更改为仅public,因为它会影响代码的某些功能,而且因为我是junit新手,所以我不知道如何解决这个问题。所以这里有人能帮我吗
提前谢谢

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

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

一个选项是在测试中使用一个
@beforeach方法
,它将设置测试期间所需的值

    @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);  
  }

那张单子的内容是什么?也。。。您知道这是一个非常奇怪且毫无意义的方法吗?您在该方法中打印的列表大小不是您返回的列表,那么为什么它会自动相同?
deliveryLinkedAllCSList
是一回事,而
CSList
是另一回事。因此,一个似乎包含3个元素的事实完全不能说明另一个包含多少元素。@Mike Nakis抱歉,这是一个错误,我编辑了问题,请再看一看,谢谢you@Stultuske对不起,这是一个错误,我编辑了问题,请再看一看,谢谢,这是在假设每个测试场景都会出现该列表的情况下进行的。您可能希望在测试方法itself@Stultuske中添加进行该设置的选项。请求的开发人员应该考虑的一些事情。但是你说得很好。投票通过。@Patrick Santana我需要的是我不想在测试类中设置任何值,而只是想调用该函数操作直接在测试类中调用,而且我在测试类中编辑了一些内容请看一下,谢谢@拉贾特克里希南,我看不出有什么不同。有些东西设定了这个价值。如果不调用what set,它将始终为0。我想我们需要更多的细节来帮助你。
@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);  
 }
    @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);  
  }