我尝试通过StackOverflow甚至谷歌来寻找这个,但要么我使用错误的关键字来找到我的答案,要么还没有直接答案。
我的问题是,使用setup()方法和从测试本身调用方法之间的性能或功能是否存在差异?
例如:
使用@Before注释注释的设置方法进行测试,该注释为每次测试运行调用。
public class TestSetup extends TestCase {
private String name;
@Before
public void setup( ) {
this.name = "abc";
}
@Test
public void test1() { assertEquals("xyz", this.name); }
@Test
public void test2() { assertEquals("abc", this.name); }
}
编写一个在执行前调用方法的测试。
public class TestSetup extends TestCase {
private String name;
public void setName() {
this.name = "abc";
}
@Test
public void test1() {
setName();
assertEquals("xyz", this.name);
}
@Test
public void test2() {
setName();
assertEquals("abc", this.name);
}
}
这有什么区别,除了在后一种情况下,程序员需要知道他必须为他实际想要使用它的人调用设置函数。
答案 0 :(得分:0)
安装方法用于像initialization
对象等对象/资源mock object,softassertions
之类的前置条件。这取决于开发人员是否使用该方法。Junit/TestNg what ever framework you take all the common object s intialization/object creation will be done in setup i.e @Before annotation
。此外,您知道在执行测试用例之前将调用@Before
。
虽然对于简单的测试方法,它不会对您的逻辑产生任何影响,但对于具有许多测试方法的批量类,它可能会导致JVM RunTimeException
空间中的related to
甚至错误or PermGen
方法区域你继续调用相同的方法堆栈。
为了克服这个问题,你可以在setup方法中编写一次,而不是多次调用同一个方法,除非你需要不同的逻辑。
希望你有设置方法的上下文。