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

Junit是否会用每个测试方法调用重新初始化类?

百里光熙
2023-03-14

当我运行下面的代码时,两个测试用例都实现了:

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

public class MyTest{
    private int count;

    @Before
    public void before(){
        count=1;
    }

    @Test
    public void test1(){
        count++;
        assertEquals(2, count); 
    }

    @Test
    public void test2(){
        count++;
        assertEquals(2, count); 
    }
}

预期行为

    null
    null

为什么junit用每个测试方法调用重新初始化class/variable。它是junit中的一个bug,或者是故意提供的。

共有1个答案

李新霁
2023-03-14

对于每个测试方法,将创建一个mytest的新实例这是JUnit的行为。

因此,对于这两种方法,变量count的值都为1,因此对于这两种测试方法,count++的值都为2,因此测试用例通过。

public class MyTest{
   public MyTest(){
      // called n times
      System.out.println("Constructor called for MyTest");
   }

   @Before //called n times
   public void setUp(){
      System.out.println("Before called for MyTest");
   }

   //n test methods
}

如果您使用2种测试方法执行上面的代码:

输出将是:

Constructor called for MyTest
Before called for MyTest
//test execution
Constructor called for MyTest
Before called for MyTest
 类似资料:
  • 问题内容: 当我运行以下代码时,两个测试用例都变为现实: 预期的行为 test1-成功 test2-失败(按预期该计数将变为3) 实际行为 test1-成功 test2-成功 为什么junit 与每个测试方法都调用。它是junit中的错误或有意提供。 问题答案: 每种测试方法的新实例 对于每种测试方法,将创建Junit的行为的 新实例。 因此,在您的情况下,这两种方法的变量都将具有value ,因

  • 我正在为StandardAlone java类编写一个Junit测试用例。我在初始化Class对象时获取nullPointerException。这是我的代码。非常感谢任何帮助 这是我的课

  • 在过去的4天里,我花了超过4天的时间研究并试图解决这个问题。可悲的是,由于与我的问题相关的糟糕的留档和缺乏社区支持,我最终决定转向StackOverflow。 这是我的问题,每个Java程序员都知道或应该知道,你基本上不应该使用静态变量,类,方法等正确的?嗯,似乎每次我试图从外部类调用方法(通过启动存储非静态方法的主类的新实例),Spiget抛出一个java.lang.IllegalArgumen

  • 我有一个测试方法,看起来像: 并行工作使用可关闭的资源来控制生命周期,该资源在方法中关闭: 问题是:方法是在完成工作之前和等待超时到期之前调用的。 怎么可能?那我该怎么解决呢?

  • 我有一个关于android camerax架构的问题。我使用的是预览视图,效果非常好。问题与片段之间的事务有关。片段1具有previewView。当我切换到fragment2并返回fragment1时,我会再次绑定previewview,使它首先出现黑屏,然后预览显示在屏幕上。我不想看到黑屏。这个问题有什么解决办法吗?

  • 我将firebase添加到我的android项目中,以使用firebase云消息传递。我按照文档进行了操作,但没有找到调用的任何说明。 我的应用程序工作很好,除了有一次它崩溃了以下错误。 当我搜索错误时,给出的解决方案是在启动时调用。 我想知道这是否真的有必要,因为文档没有提到它,我的应用程序在没有它的情况下工作(大部分)很好。 有人知道调用是否真的有必要,还有什么可能导致我上面提到的错误吗? 下