当前位置: 首页 > 知识库问答 >
问题:

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

融宏伟
2023-03-14

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

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

这是我的Junit测试类

@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失败了,它说excepted<3>但actual<0>而且我不能将静态方法仅改为public,因为这会影响代码的某些功能,而且由于我是junit的新手,所以我不知道如何解决这一问题。所以有人能在这里帮助我吗?谢谢!!

共有1个答案

罗昊空
2023-03-14

您需要验证如何在运行时填充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);  
  }
 类似资料:
  • 问题内容: 我正在使用JUnit4和Cobertura仅使用静态方法测试助手类。测试方法是一项容易的任务,并且已经完成。 但是,cobertura显示该类没有被测试完全覆盖,因为它没有在任何地方实例化。 我不想创建此类的实例(它是一个帮助程序类),因此第一个解决方案是隐藏构造函数(这通常是帮助程序类的好方法)。 然后,cobertura抱怨测试未涵盖空的私有构造函数。 有什么解决方案可以在这种情况

  • 实际上,它的测试如果eat方法对宠物有效,但我也需要检查feedPet方法对玩家也有效。 任何想法或建议都非常感谢。

  • 将标准JUnit5测试转换为参数化测试,以便使用Kotlin中的和注释遍历测试用例流。 无法访问数据流。这似乎是这个注释的一个问题,因为按照预期遍历静态定义的选项。 错误: PreConditionViolationException:无法对空目标调用非静态方法{someMethodName}。 参数化测试设置为通过数据类流,类似于Phillip Hauer在参数化测试的数据类中概述的设置。 An

  • 问题内容: 说,我有一个带有SomeType的具有静态方法的Class对象的引用。有没有一种方法可以调用该方法而不先实例化SomeType?最好不要转义强类型。 编辑:好的,我搞砸了。 在这种情况下,someMethod()始终不能是静态的。 问题答案: 根据定义,静态方法是在类上调用的,而不是在该类的实例上调用的。 因此,如果您使用: 您没有实例化任何东西(不考虑由JVM处理并且超出了您的范围的

  • 我有一个类,它是有向无环图上拓扑排序的实现。此类中有两种方法: > 公共静态int[]排序(int[][]dag)-将表示DAG的二维数组作为参数,并返回有序节点的数组 私有静态无效访问-该访问执行深度优先搜索,并用于排序方法 我必须编写一个JUnit测试来测试具有不同输入的代码。我对JUnit测试比较陌生,不知道如何解决这个问题。我想我需要编写一个参数化测试,但是如何测试静态方法sort(int

  • 我正在为一个叫Student的班写一些junit测试。基本上,每个学生都有一个studentNum,它被设置为一个迭代器,迭代器是一个私有静态int。每次创建新学生时,studentNum都会递增。 我对一个函数进行了几个测试,该函数从传入的学生数组列表中获取studentNum为1的学生。然而,每次我在一个新测试中创建一个新的学生数组列表时,studentNum从上一个测试的studentNum