Java @Before没有为@Test实例化我的对象
实际上,我在@Before上实例化了对象角色,但在测试中,eclipse告诉我p无法解析Java @Before没有为@Test实例化我的对象,java,eclipse,junit,compiler-errors,Java,Eclipse,Junit,Compiler Errors,实际上,我在@Before上实例化了对象角色,但在测试中,eclipse告诉我p无法解析 如果我在类中实例化对象,我可以使它工作。但是我想在开始工作之前创建@。我认为您需要导入定义角色对象的文件。否则,您的测试文件将无法知道,这就是为什么它抛出错误,表示p无法解析 在该测试文件的顶部,尝试包含以下语句: import <package_name>.Persona 我相信您需要导入定义角色对象的文件。否则,您的测试文件将无法知道,这就是为什么它抛出错误,表示p无法解析 在该测试文件的
如果我在类中实例化对象,我可以使它工作。但是我想在开始工作之前创建@。我认为您需要导入定义角色对象的文件。否则,您的测试文件将无法知道,这就是为什么它抛出错误,表示p无法解析 在该测试文件的顶部,尝试包含以下语句:
import <package_name>.Persona
我相信您需要导入定义角色对象的文件。否则,您的测试文件将无法知道,这就是为什么它抛出错误,表示p无法解析 在该测试文件的顶部,尝试包含以下语句:
import <package_name>.Persona
为了确保Persona实例变量p在setUp中得到构造,put p=newpersona;在设置方法内部。 将实例的声明更改为简单的Persona p;没有新的。。。那里 这样,在调用每个测试之前,在setup方法中创建对象
人格声明;必须仍然在@Before/setup方法之外。如果声明与新调用一起位于该方法中,则它仅在setup方法中可用。您需要它对测试方法可用。以确保在设置中构造Persona实例变量p-put p=new Persona;在设置方法内部。 将实例的声明更改为简单的Persona p;没有新的。。。那里 这样,在调用每个测试之前,在setup方法中创建对象 人格声明;必须仍然在@Before/setup方法之外。如果声明与新调用一起位于该方法中,则它仅在setup方法中可用。您需要它可用于测试方法。p是设置方法中的局部变量。如果希望其他方法可以访问它,则应将其设置为成员变量:
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);
}
}
p是设置方法中的局部变量。如果希望其他方法可以访问它,则应将其设置为成员变量:
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);
}
}
局部变量是。。。地方的方法中声明的变量只能在该方法中使用。这与JUnit无关。所以如果你想让p在两种方法中都可以访问,它需要是一个字段,而不是一个局部变量。。。地方的方法中声明的变量只能在该方法中使用。这与JUnit无关。因此,如果你想让p在两种方法中都可以访问,它必须是一个字段,而不是一个局部变量。我的错。那么我认为你应该在你的设置方法中创建Persona p,否则内部方法将无法知道p是什么。我已经导入了这个类,我没有在这里的代码中粘贴它。我的错。那么我认为你应该在你的设置方法中创建Persona p,否则内部方法将无法知道p是什么。很好很好,我理解,你这样做的方式和创建整行Persona p=新Persona之间有任何区别;直接在类中?@Nezvi是的-您仍然依赖JUnit的机制在每次测试之前运行@Before方法,这是使用JUnit的正确方法,就像您在原始postNice中尝试的那样,我理解,您这样做与使整行Persona p=新Persona有任何区别;直接在类中?@Nezvi是的-您仍然依赖JUnit的机制在每次测试之前运行@Before方法,这是使用JUnit的正确方法,就像您在最初的帖子中尝试的那样