如何在测试中只执行一次方法设置

How can performed method setUp only once in tests

我有测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestRepositoryConfig.class})
@Transactional
public class ServiceTest {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private Service service;

static {
   initTestUser();
}

public void setUp() { 
   userRepository.seve(testUser);
}

public void test1() { ... }

public void test2() { ... }

我需要先启动方法 setUp,保存 testUser,然后启动方法 test1 和 test2。方法 setUp 必须只执行一次!怎么做到的?

使用@BeforeClass注释

public class MyTest {
     @BeforeClass public static void setupClass() { /* Set up stuff once */ }
     @Test public void test1() { /* ... */ }

}

但是请注意,静态方法无法访问实例成员,并且您要在测试前设置的东西 运行 需要是静态的。建议之后使用 @AfterClass

进行清理

我认为您要解决的问题应该以不同的方式解决。据我所知,您想用一些测试数据填充您的数据库,最好在所有测试的全局配置中这样做。

但是如果您想坚持最初的想法,您可以尝试 this blog post 中描述的听众方法。