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

在JUnit 4Java中使用@Beforeclass和使用实例或静态变量有什么区别?

邹书
2023-03-14

我是单元测试新手。关于在JUnit 4中使用@前注释的目的。我只是不知道使用它的意义:

public class FoodTestCase {
    static private Food sandwich;

    @BeforeClass
    public static void initialise(){
        sandwich = new Sandwich();    
    }

}

public class FoodTestCase {
    static private Food sandwich = new Sandwich();

}

有什么区别?

共有3个答案

充栋
2023-03-14

几乎没有区别。但是如果< code>Sandwich的构造函数抛出异常,你就不能直接初始化它< code > static private Food Sandwich = new Sandwich();但是必须用< code>try/catch块包装初始化。然而,方法< code > initialize()可能被声明为< code>throws MyException,因此如果在初始化期间确实抛出了异常,测试用例将会失败。

茅和玉
2023-03-14

我觉得想法是这样的:你用@AfterClass来释放资源。那么有@BeforeClass来获取它们也就顺理成章了。因为让开发人员猜测他需要使用静态块可能不是一个好主意。

郎长卿
2023-03-14

在这种情况下,可能没有必要,因为初始化非常简单。

如果您有一些日志记录、复杂的初始化或需要释放一些资源,您必须使用@BeforeClass和@AfterClass

 类似资料:
  • 问题内容: 这个问题的标题实际上是先前的考试问题,我正在寻求澄清/答案。 请注意,我正在学习Java并逐渐熟悉它的语法。 我了解可能曾经有人问过这个问题,如果可以,有人可以告诉我在哪里可以访问该问题?如果是这种情况,也请接受我的歉意。为了表明我一直在研究这一领域,我个人的理解是实例变量属于某个类(模板)的对象/实例,并且可以在需要时在该实例/对象内进行更改(变异)。 类变量是仅具有一个副本且可以访

  • 问题内容: 有一些关于如何为Swift 编写代码以及如何在Swift中编写代码的文章。但尚不清楚何时使用和而不是和。有人可以解释吗? 问题答案: 当您在类(或结构)中定义静态var / let时,该信息将在所有实例(或值)之间共享。 分享信息 如您在这里看到的,我创建了2个单独的实例,但是它们确实共享相同的静态变量。 辛格尔顿 通常使用静态常数来采用Singleton模式。在这种情况下,我们希望分

  • 我想问一个问题,什么时候在Java中使用静态变量/方法或实例变量/方法更有利? 我知道这取决于特定的情况(比如将util类编程为静态方法),但是我们能声明一些像通用策略一样的东西吗?

  • 静态变量和实例变量之间的区别是什么。下面这句话是我无法理解的: 在某些情况下,一个类的所有对象只能共享一个特定变量的副本——这里使用静态变量。 静态变量代表类范围的信息。一个类的所有对象共享相同的数据。 我认为实例变量在类范围内使用,而静态变量只在它们自己的方法中有作用域?

  • 问题内容: 在android中,推荐使用静态变量吗?例如,用Java实现Singleton模式,我通常这样做: 此外,Android JVM何时可以清除此漏洞? 问题答案: 字段会整体附加到实例,而实例又附加到加载了类的。整个回收时将被卸载。我确信这会在销毁该应用程序时发生(不是在它进入后台或暂停但完全关闭时发生)。 因此,只要你的应用程序运行,就可以将其视为生存。Singleton是个好主意吗?

  • 问题内容: 为什么要使用静态块: 过度: 一个相对于另一个的优点/缺点是什么? 问题答案: 仅在必要时才使用静态初始化程序块。例如,有时您需要执行几个步骤来计算字段的最终值。在这种情况下,您有两个机会:编写一个计算值并将字段声明为的方法,或使用初始化程序块: 在这种情况下,我更喜欢使用静态块,因为方法可能会造成混乱(其他开发人员可能会尝试调用它,尽管在初始化期间只能被调用一次)。 实例字段也是如此