- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
两者的主要区别是什么
@Before
和 @BeforeClass
@BeforeEach
和 @BeforeAll
@After
和 @AfterClass
根据JUnit Api @Before
用于以下情况:
When writing tests, it is common to find that several tests need similar objects created before they can run.
而@BeforeClass
可用于建立数据库连接。但@Before
不能做同样的事情吗?
最佳答案
标记为@Before
的代码在每次测试之前执行,而@BeforeClass
在整个测试装置之前运行一次。如果您的测试类有十个测试,@Before
代码将执行十次,但 @BeforeClass
只会执行一次。
通常,当多个测试需要共享相同的计算成本高昂的设置代码时,您可以使用@BeforeClass。建立数据库连接就属于这一类。您可以将代码从 @BeforeClass
移至 @Before
,但测试运行可能需要更长时间。请注意,标记为 @BeforeClass
的代码作为静态初始化程序运行,因此它将在创建测试装置的类实例之前运行。
在 JUnit 5中,标签 @BeforeEach
和 @BeforeAll
相当于 JUnit 4 中的 @Before
和 @BeforeClass
。它们的名称更能说明它们何时运行,松散地解释为:“在每个测试之前”和“在所有测试之前一次”。
关于java - @Before、@BeforeClass、@BeforeEach 和 @BeforeAll 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51265057/
我有一个带有数据库和 rabbitmq 用法的小型 Spring Boot 应用程序。 所以我想用集成测试(H2 + apache qpid)进行测试。 @ExtendWith(SpringExten
这是同一测试的 2 个样本。唯一的区别是第一个使用了 beforeAll 中的 promise 。块为变量赋值,而第二个块直接赋值。 我提出了类似的问题 Running spec after prom
我需要使用 React 测试库和 Jest 在我的测试中模拟不同的窗口大小。 目前我必须在每个测试文件中包含这个beforeAll: import matchMediaPolyfill from 'm
我有一个使用 Jest 测试的 Node.js 项目。我有几个具有相同设置要求的测试文件。以前,所有这些测试都在一个文件中,所以我只有一个 beforeAll(...)执行通用设置。现在,随着测试分成
我正在为rest api spring boot编写单元测试。 @RunWith(SpringRunner.class) @SpringBootTest(classes = WorkflowEngin
给定我测试的类,其中有许多嵌套类: class TestWithManyNested { @RegisterExtension static MyExtension extension
我正在尝试通过测试将我的项目从使用 JUnit 4 升级到 JUnit5。升级后: @RunWith(VertxUnitRunner.class) --> @ExtendWith(VertxExten
我尝试过思考这个问题,阅读了一些问题,并且创建了一个小测试: describe("let", () => { let x = 1; it("",function() { console
我遇到了一个常见的场景。我需要在 beforeAll 或每个变量中创建一个变量。 describe('some test', () => { beforeAll(() => { const
我刚刚安装了Protractor v2.0.0 .我尝试添加 beforeAll测试并出错 ReferenceError: beforeAll is not defined 查看堆栈跟踪,我看到 ja
我想在 Eclipse Oxygen 4.7.3a 中从 JUnit 4 转换为 5。我认为添加 Jupiter 库就足够了:库、构建路径等。但是,@BeforeAll , @AfterAll , @
这是我所拥有的: spec :: Spec spec = do manager SpecWith a -> Spec 但我不知道如何从测试中访问经理。 spec :: Spec spec = b
在使用 Jasmine 测试我的 Meteor 应用程序的某个功能之前,我必须为测试准备不同的东西。因此我使用 beforeAll block 。 重置数据库 在数据库中创建一个讲座 在数据库中创建一
我正在使用 nodejs 为我们的 API 创建一个端到端的测试套件。在每次测试运行之前,我需要为该测试插入数据库记录。许多有问题的表没有使用 native 自动增量类型字段作为它们的主键。 (我知道
我正在使用 Jest-Puppeteer 对 Rails 应用程序进行端到端测试。在这些测试之前,我想运行一些种子并进行 DRY 我告诉服务器在每次测试之前转到某个 URL。 // imports d
我最近查看了一位同事的代码,我意识到他在 describe 调用顶部的 BeforeAll 函数中实现了一个 jest 函数,然后在 beforeEach 函数中创建了一个数据对象。这让我想知道,Be
为什么我们不应该将 beforeAll(function(){ let foo = 'test' }) 替换为 let foo = 'test' ?如果第二种方法没问题,beforeAll 的目的是什
目前 JUnit 5 API 只允许在静态方法上使用 @BeforeAll。 所以如果我做这样的事情,它不会编译: @BeforeAll fun setup() { MockitoAnno
我有一个简单的问题。我有这样的类结构:基类和子类(关系是继承)。 @BeforeAll 来自 JUnit5。 abstract class Base { static{ Sy
我正在尝试使用 @Transactional 来测试我的应用程序,以在测试后回滚,并使用 @BeforeAll 设置测试对象: @EnableJpaRepositories @SpringBootTe
我是一名优秀的程序员,十分优秀!