Java @Before没有为@Test实例化我的对象

Java @Before没有为@Test实例化我的对象,java,eclipse,junit,compiler-errors,Java,Eclipse,Junit,Compiler Errors,实际上,我在@Before上实例化了对象角色,但在测试中,eclipse告诉我p无法解析 如果我在类中实例化对象,我可以使它工作。但是我想在开始工作之前创建@。我认为您需要导入定义角色对象的文件。否则,您的测试文件将无法知道,这就是为什么它抛出错误,表示p无法解析 在该测试文件的顶部,尝试包含以下语句: import <package_name>.Persona 我相信您需要导入定义角色对象的文件。否则,您的测试文件将无法知道,这就是为什么它抛出错误,表示p无法解析 在该测试文件的

实际上,我在@Before上实例化了对象角色,但在测试中,eclipse告诉我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的正确方法,就像您在最初的帖子中尝试的那样