![](/img/trans.png)
[英]junit4: How to call the other class static method in junit4 @before or @Test?
[英]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.