java – JUnit:在调用每个@Test方法之前的新实例.有什么好处?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – JUnit:在调用每个@Test方法之前的新实例.有什么好处?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1504字,纯文字阅读大概需要3分钟。
内容图文
![java – JUnit:在调用每个@Test方法之前的新实例.有什么好处?](/upload/InfoBanner/zyjiaocheng/710/fce2ba52dcec4f7ebe31d1bbb973a40e.jpg)
目前,我正在阅读“JUnit in action”一书.在本书中,我发现了以下文字:
JUnit creates a new instance of the test class before invoking each
@Test method. This helps provide independence between test methods and
avoids unintentional side effects in the test code. Because each test
method runs on a new test class instance, we can’t reuse instance
variable values across test methods.
现在我认为这种方法没有多大意义:
例如:
public class CalculatorTest {
@Test
public void testAdd_1() {
Calculator calculator = new Calculator();
double result = calculator.add(1, 1);
assertEquals(2, result, 0);
}
@Test
public void testAdd_2() {
Calculator calculator = new Calculator();
double result = calculator.add(2, 2);
assertEquals(4, result, 0);
}
}
对于测试类CalculatorTest,没有任何好处.
好吧,让我们去关注另一个例子:
public class OneTest {
static byte count;
public OneTest() {
count++;
}
@Test
public void test1() {
System.out.println(count);
}
@Test
public void test2() {
System.out.println(count);
}
}
对于测试类OneTest,我找到了一种方法,可以为许多测试方法使用相同的变量计数…
那么,如何看待书中描述的方法的真正好处呢?
解决方法:
How to see the real benefits of the approach described in the book?
单独实例的目的不是为了任何好处,而是为了维护合同,即每个测试应该独立执行而不会影响先前测试的执行.除了为每个测试使用不同的实例之外,没有其他方法可以确保此合同.
例如,Spring事务管理确保在默认情况下通过测试回滚对数据库所做的所有更改,以维护相同的合同.
因此,通常不鼓励在测试中使用静态变量,因为它会破坏每个测试的一个实例的整个目的,以便为每个测试提供一个清晰的平板.
内容总结
以上是互联网集市为您收集整理的java – JUnit:在调用每个@Test方法之前的新实例.有什么好处?全部内容,希望文章能够帮你解决java – JUnit:在调用每个@Test方法之前的新实例.有什么好处?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。