Spring参数化/理论JUnit测试

时间:2012-01-23 16:27:11

标签: java junit

我希望将Spring Profiles and Configurations的灵活性与使用ParameterizedTheories注释的JUnit测试的并行运行相结合。有没有办法合并所有这些功能,让我的单元测试运行?

我一直遇到的问题是需要访问注入bean的参数,这是不可能的,因为使用@Parameters或@DataPoints注释的函数应该是静态的。我真的很讨厌必须将它连接到每个类甚至某个静态函数,因为我希望能够快速切换配置文件而无需更改Java代码。这可能吗?

2 个答案:

答案 0 :(得分:2)

找到此请求的ticket。看来附件有一些问题。看起来这已经是一段时间的功能请求了。

答案 1 :(得分:2)

我一直在寻找这个问题的解决方案。还有一个!但是,因为它来自某人的博客,但我无法承认它。 : - )

不幸的是我找不到原来的博客......

@RunWith(Parameterized.class)
@ContextConfiguration("/beans.xml")
public class MyTest {

  private final File file;

  public MyTest(final File file) {
    this.file = file;
  }

  @Autowired
  private PlatformTransactionManager transactionManager;

  private TestContextManager testContextManager;

  @Parameterized.Parameters
  public static Collection<File[]> getFilesToTest() throws Exception {
    return getValidFiles();
  }

  @Before
  public void setUpSpringContext() throws Exception {
    testContextManager = new TestContextManager(getClass());
    testContextManager.prepareTestInstance(this); // does the autowiring !
  }

  @Test
  public void testInTransactionContext() throws Exception {
    new TransactionTemplate(transactionManager).execute(new TransactionCallback() {
      public Object doInTransaction(final TransactionStatus status) {
        status.setRollbackOnly();
        try {
          ... run the test ...
        } catch (Exception e) {
          throw new RuntimeException(e);
        }
        return null;
      }
    });
  }
}