我实际上是在Persona
上实例化对象@Before
,但是在测试中,eclipse告诉了我"p cannot be resolved"
。
public class PersonaTest {
// With next line here, app is working, but im trying to understand the
// @Before
@Before
public void setUp() {
Persona p = new Persona();
p.setDni(38890422);
p.setEdad(24);
p.setNombre("Nicolas");
p.setSueldo(25000);
}
@Test
public void testGestDni() {
int resultado = p.getDni();
int resultadoEsperado = 38890422;
Assert.assertEquals(resultadoEsperado, resultado);
}
}
如果我在课堂上实例化该对象,我可以使其工作。但是我想使@Before
工作。
答案 0 :(得分:3)
p
是您的setUp
方法中的局部变量。如果希望其他方法可以访问它,则应使其成为成员变量:
public class PersonaTest {
private Persona p; // changed to a member
@Before
public void setUp() {
// But p is still initialized here:
p = new Persona();
p.setDni(38890422);
p.setEdad(24);
p.setNombre("Nicolas");
p.setSueldo(25000);
}
@Test
public void testGestDni() {
int resultado = p.getDni(); // Tests can now use p
int resultadoEsperado = 38890422;
Assert.assertEquals(resultadoEsperado, resultado);
}
}
答案 1 :(得分:1)
为确保在“ setUp”中构造Persona实例变量p,请在setUp方法内放置“ p = new Persona();”。 将该实例的声明更改为简单的“ Persona p;”(那里没有“ new ...”) 这样,在调用每个测试之前,将在setup方法中创建对象。
@Persona p;的声明必须仍然在@ Before / setup方法之外。如果声明在该方法内(以及“ new”调用),则只能在setup方法内 使用。您需要它可用于测试方法。
答案 2 :(得分:0)
我认为您需要在定义“ Persona”对象的位置导入文件。否则,您的测试文件将无法知道,这就是为什么它会抛出错误,指出“ p无法解析。”
在此测试文件的顶部,尝试包含以下语句:
import <package_name>.Persona