当前位置: 首页 > 面试题库 >

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

预期的行为

  1. test1-成功
  2. test2-失败(按预期该计数将变为3)

实际行为

  1. test1-成功
  2. test2-成功

为什么junit reinitializing class/variable与每个测试方法都调用。它是junit中的错误或有意提供。


问题答案:

MyTest每种测试方法的新实例

对于每种测试方法,将创建Junit的行为的 新实例MyTest

因此,在您的情况下,这两种方法的变量count都将具有value 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


 类似资料:
  • 当我运行下面的代码时,两个测试用例都实现了: 预期行为 null null 为什么junit用每个测试方法调用。它是junit中的一个bug,或者是故意提供的。

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

  • 问题内容: 我目前在 此URL实际上按照以下路由指示加载Module.js类: 这包含在index.js文件中定义的和元素中。 Module类具有和方法。这些设置了记录2的初始详细信息和装入信息。到目前为止一切正常。 现在,我的问题是,在Module.js的孙组件中,我使用以下Redirect重定向到另一个页面,例如第3页: 构造函数或componentWillMount无法运行,因此记录#3无法

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

  • 下面的代码片段: 我尝试使用“automatickeepaliveClientMixin和@override bool get wantKeepAlive=>true”-即保持它活动,以便下次调用它时,它不会再次调用initState(),但是它没有工作。

  • 我正在为我的项目编写junit测试用例,但我在这里面临一个问题,就是我在我的一个java类(GraphNodes.java)中使用的方法 这是我的Junit测试类 我的junit失败了,它说excepted<3>但actual<0>而且我不能将静态方法仅改为public,因为这会影响代码的某些功能,而且由于我是junit的新手,所以我不知道如何解决这一问题。所以有人能在这里帮助我吗?谢谢!!