簡體   English   中英

JUnit4 - @Autowired 服務是 @Before 注釋方法中的 null

[英]JUnit4 - @Autowired service is null in @Before annotated method

我有一個 JUnit 測試,如下所示:

@RunWith(JUnitParamsRunner.class)
public class ProcessnDbUnitTest extends DbunitTestParent {

    @Autowired
    private ProcessRepositiory pr;

    private static List<Object[]> allProcessIds = new ArrayList<>();

    private static Object[][] result = new Object[allPDRIds.size()][];

    private static List<Process> process = new ArrayList<>();

    @Before
    public void before() {
        processes = pr.findAll();
        pr.findAll().stream().forEach(process -> allProcessIds.add(new Object[] { process.getId() }));
        result = new Object[allProcessIds.size()][];
    }

DbUnitTestParent:

@ContextConfiguration(classes = DbUnitApplication.class)
@RunWith(Suite.class)
@SuiteClasses({UserDbUnitTest.class, ProcessDbUnitTest.class })
public class DbunitTestParent extends AbstractTransactionalJUnit4SpringContextTests {

    @PersistenceContext
    private EntityManager em;

    @After
    public final void flush() {
        em.flush();
    }

}

在這種情況下,測試本身並不重要。 這些字段是 static 因為@Before方法正在獲取參數化測試的內容。

在調試測試時,我看到在before()方法中,自動裝配的ProcessRepository是 null。 奇怪的是,在另一個非常相似的測試中,一切正常……為什么會發生這種情況?

class aka bean set Autowired Annotation 需要 Spring 上下文來初始化和管理,如果你想使用這個注解,你應該使用 SpringJUnit4ClassRunner,如果沒有你可以使用 Z4D1142CA816EAC3E33B383B9 模擬它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM