我在使用Before Class注释执行任何junit测试之前尝试执行一个代码(我在其中自动拧一个属性)但是这里的问题是在应用程序上下文加载之前调用的带注释的方法由于这个我得到了null值property(helloWorld)。
请参阅相同的代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/SpringBeans.xml")
public class JunitTest {
@Autowired
private static HelloWorld helloWorld;
@BeforeClass
public static void methodBefore(){
helloWorld.printHello();
System.out.println("Before Class");
}
@Test
public void method1(){
System.out.println("In method 1");
}
@Test
public void method2(){
System.out.println("In method 2");
}
@Test
public void method3(){
System.out.println("In method 3");
}
@Test
public void method4(){
System.out.println("In method 4");
}
@AfterClass
public static void methodAfter(){
System.out.println("After Class");
}
}
以同样的方式,我想在执行所有junit测试后执行一些代码。
请建议我如何实现上述目标
答案 0 :(得分:0)
你不应该在autowired字段上使用静态。在此处查看更多内容:Can you use @Autowired with static fields? 从HelloWorld中删除静态,你应该没问题
答案 1 :(得分:0)
您无法自动装配静态字段 - 只需从helloWorld
字段中删除静态修饰符。
现在的问题是@BeforeClass
注释只能放在静态方法上。您必须使用Spring TestExecutionListener.beforeTestClass(TestContext)方法
根据您的要求,您可能会接受现有的侦听器,例如TransactionalTestExecutionListener,它可以在启动事务之前调用您的方法,例如e.t.c。