如果我用的是同一变量通过整个单元的测试?

0

的问题

我创建单元的测试和每个方法,我创造的同样的列表、变量、等等。 另一方面,当然我认为我可以创建所有这些变量为全球和集他们的价值观的 setup() 方法(在 @Before),但我不肯定,如果价值观可能以改变运行测试时,由于多线程,等等。 那么,什么是最好的方式为这种情况?

java junit junit5 testing
2021-11-23 13:33:22
1

最好的答案

2

没什么好担心的。 JUnit将创建一个新实测试类,然后每 @Before 方法,然后才运行 @Test 方法,它不会这首歌和舞蹈表演一遍 @Test 附加说明的方法,在这类. 你使用 @Before 正是因为它的目的是:它用以储存的初始化码所需的所有的测试中,测试类。

JUnit它不会这种方式,因为'试验的独立性'是好的有:测试,最好,失败或通过独立的排序在其执行它们。

每隔一段时间的初始化过程是如此昂贵的,这不值得支付的"费用"的运行,它再次对每一个测试。 注释 @BeforeClass 存在具体用于 这一 目的。 对如果是的话,为什么不试的 @BeforeClass 甚至阐明了这妥协试验的独立性,并应因此只能用如果安装工作你不在这样一种方法是充分昂贵(计算或其他方式),以使这一权衡。

换句话说:

你担心试验的独立性是真实的,但它们适用于 @BeforeClass. @Before 不遭受这个问题;这些代码被重新运行每一个测试。

NB:你可以扔所有这窗如果你有 static 东西怎么回事。 没有静态的东西在测试代码,除非你真的知道你在做什么。 我假定你没有,在这种情况下进行,测试是独立的。

2021-11-23 13:38:26

谢谢你,任何例的代码显示适当的使用情况?
rzwitserloot

我不理解之间的差异 @BeforeClass@Before. 任何澄清请?
Amadán

所有的方法 @Before 运行前, 每一个 测试。 所有的方法 @BeforeClass 运行只有一次,在任何试验。 一般来说,设置 static 的东西 @BeforeClass 然后再次使用(所,测试不再独立)。 你设置的非静态的东西 @Before,而这样的试验是独立的。 只需阅读该文件对这些注释。
rzwitserloot

@BeforeClass (JUnit5: @BeforeAll)运行一次对整个试验班, @Before (JUnit5: @BeforeEach)运行之前,每个单试验方法。
rzwitserloot

我用JUnit5,然后我看到了差别 @BeforeEach vs @BeforeAll 嗯从你的解释。 然而,我不知道我是否应该或不清楚名单中使用通过多次测试。 我唉需要清除他们 @AfterEach. 任何想法?
avandeursen

不清楚的列表。 这听起来也像你应该玩具这一点,因为显然一个所以答案是不够用于你。 这是一个很好的直觉! 只是...做一些测试,添加一些因素的列表的初始化中只有一次 @Before和打印一些东西-无需除去什么。 然后简单的观察会发生什么情况。

是的,它可以发挥,但我认为这是一个很常见的情况,必须有一个一般方法。 所以,我只是需要澄清关于单元试验公约》重新采用的同一变量(例如只限定一旦在@BeforeEach @BeforeAll、明确的变量 @AfterEach. 那么,什么是适当的做法对于这种情况下?. 任何想法?

使用 @Before. 我不知道怎么可能仍然是令人困惑你在这一点上。 答复的咒语吧!

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................