Java eclipse中的测试spring注释配置通过,但maven

Java eclipse中的测试spring注释配置通过,但maven,java,spring,maven,junit,Java,Spring,Maven,Junit,我使用spring注释配置对autowire bean进行了单元测试。它在eclipse中工作得很好(选择RunAs>JUnit…),但在运行mvn测试时失败(Bean为NULL)。我不知道两者有什么不同。我怎样才能在maven也跑得好呢?谢谢 PasswordTest.java: pom.xml 。。。 朱尼特 朱尼特 3.8.1 测试 ... Maven输出: 运行com.backend.PasswordTest 测试运行:1,失败:1,错误:0,跳过:0,运行时间:0秒Maven管理JA

我使用spring注释配置对autowire bean进行了单元测试。它在eclipse中工作得很好(选择RunAs>JUnit…),但在运行
mvn测试时失败(Bean为NULL)。我不知道两者有什么不同。我怎样才能在maven也跑得好呢?谢谢

PasswordTest.java:

pom.xml

。。。
朱尼特
朱尼特
3.8.1
测试
...
Maven输出:

运行com.backend.PasswordTest

测试运行:1,失败:1,错误:0,跳过:0,运行时间:0秒Maven管理JAR和对象生命周期;就这些

我建议您使用JUnit4.x或更高版本

您有一个@Autowired注释,这表明您希望Spring管理您的依赖项,但您调用new来实例化PasswordEncoder。这两者是相互排斥的。当您调用new时,Spring不会管理这个bean。如果您想让Spring来管理它们,不要调用new。应用程序中的所有对象都需要在Spring的控制下


我还建议您在编写单元测试时不要使用Spring。没有理由产生这种开销,特别是对于像这样简单的测试。

Maven管理JAR和对象生命周期;就这些

我建议您使用JUnit4.x或更高版本

您有一个@Autowired注释,这表明您希望Spring管理您的依赖项,但您调用new来实例化PasswordEncoder。这两者是相互排斥的。当您调用new时,Spring不会管理这个bean。如果您想让Spring来管理它们,不要调用new。应用程序中的所有对象都需要在Spring的控制下


我还建议您在编写单元测试时不要使用Spring。没有理由产生这种开销,特别是对于像这样简单的测试。

Maven管理JAR和对象生命周期;就这些

我建议您使用JUnit4.x或更高版本

您有一个@Autowired注释,这表明您希望Spring管理您的依赖项,但您调用new来实例化PasswordEncoder。这两者是相互排斥的。当您调用new时,Spring不会管理这个bean。如果您想让Spring来管理它们,不要调用new。应用程序中的所有对象都需要在Spring的控制下


我还建议您在编写单元测试时不要使用Spring。没有理由产生这种开销,特别是对于像这样简单的测试。

Maven管理JAR和对象生命周期;就这些

我建议您使用JUnit4.x或更高版本

您有一个@Autowired注释,这表明您希望Spring管理您的依赖项,但您调用new来实例化PasswordEncoder。这两者是相互排斥的。当您调用new时,Spring不会管理这个bean。如果您想让Spring来管理它们,不要调用new。应用程序中的所有对象都需要在Spring的控制下

我还建议您在编写单元测试时不要使用Spring。没有理由产生这种开销,特别是对于像这样简单的测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
public class PasswordTest {

    @Configuration
    static class ContextConfiguration {
        @Bean
        public PasswordEncoder passwordEncoder() {
            PasswordEncoder passwordEncoder = new org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder();
            return passwordEncoder;
        }
    }

    @Autowired(required = true)
    private PasswordEncoder encoder;

    @Test
    public void testPassword() {
        String password = encoder.encode("123"); // Line 43 here
        System.out.println(password);
        assertTrue(password != null && password.length() != 0);
    }

}
...
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
</dependency>
...
Running com.backend.PasswordTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
com.backend.PasswordTest.testPassword()  Time elapsed: 0 sec  <<< FAILURE!
java.lang.NullPointerException
    at com.backend.PasswordTest.testPassword(PasswordTest.java:43)