我知道这是一个不好的做法,但是需要完成,否则我需要切换到testng
。有没有一种类似于JUnit
3的testSuite的方法来指定要在类中运行的测试的顺序?
如果你确定你 真的 想这样做:有可能是一个更好的办法,但是这是我能拿出…
JUnit4有一个注释:@RunWith
它使您可以覆盖测试的默认Runner。
在您的情况下,您将需要创建一个特殊的子类BlockJunit4ClassRunner
,并重写computeTestMethods()
以按照您希望它们执行的顺序返回测试。例如,假设我想以相反的字母顺序执行测试:
public class OrderedRunner extends BlockJUnit4ClassRunner {
public OrderedRunner(Class klass) throws InitializationError {
super(klass);
}
@Override
protected List computeTestMethods() {
List list = super.computeTestMethods();
List copy = new ArrayList(list);
Collections.sort(copy, new Comparator() {
public int compare(FrameworkMethod o1, FrameworkMethod o2) {
return o2.getName().compareTo(o1.getName());
}
});
return copy;
}
}
@RunWith(OrderedRunner.class)
public class OrderOfTest {
@Test public void testA() { System.out.println("A"); }
@Test public void testC() { System.out.println("C"); }
@Test public void testB() { System.out.println("B"); }
}
运行此测试将产生:
C
乙
一个
对于您的特定情况,您需要一个比较器,该比较器按照您希望它们执行的顺序按名称对测试进行排序。(我建议使用谷歌Guava类之类的方法来定义比较器Ordering.explicit("methodName1","methodName2").onResultOf(...);
,其中onResultOf提供了一个将FrameworkMethod转换为其名称的函数…尽管显然您可以自由地实现所需的任何方式。
Spring Transaction Propagation如何为Propagation_REQUIRED和Propagation_REQUIRED_NEW工作? 请提供有关类到类级别和方法到方法级别的传播的信息。 我还需要知道如何初始化/启动这些事务,并在当前事务完成时恢复以前的事务,以进行传播。 在需要传播和需要新传播的情况下使用单个事务时,事务将如何决定何时需要提交/回滚?
我一直在研究Java多线程概念。我看得越多,就越困惑。 现在我不明白Java中类级别、对象级别、显式锁定和内在锁定之间的区别。有人能告诉我是什么吗?此外,如果我能得到一些例子来理解,那将对我很有帮助。
当我运行应用程序并点击http://localhost:8080/hello时,一切都很好: 但是,如果我删除了方法上的注释: 然后参数变为null,aspect方法抛出NullPointerException。 这似乎起作用了,但这是一个好的解决办法吗? 编辑:此解决方案也不起作用。如果我在类和方法级别上都有注释,假设类级别的注释值为false,而方法级别为true,那么注释值将为false。
问题内容: 我一直在研究Java多线程概念。我越经历他们,我就越困惑。 现在,我还不了解Java中的类级别,对象级别,显式和固有锁定之间的区别。有人可以让我知道这是什么吗?另外,如果我可以理解一些示例,那对我也将非常有帮助。 问题答案: 显式与内在 当您在对象上使用或间接用作方法签名的一部分时,您正在创建内部锁。您依赖与所有对象和类关联的内置锁。 软件包中的Java 5+提供了显式锁。最常用的类可
问题内容: 我对Spring 3.2.3 @Transactional注解有疑问。我的服务类如下所示: 如果我调用persist()方法,所有方法都可以正常工作。但是,如果我在类级别将@Transactional注释掉- 事务将不会启动。谁能告诉我为什么Spring只能在methol级忽略@Transactional? 问题答案: 您不能从processDisclosureData()调用pers
我正在研究testng中的一个问题。我想知道是否有办法在测试类级别指定超时,而不是单个方法。我知道套件xml级别的“超时”,但这适用于每个测试类中的每个测试方法。 我真的希望能够指定一个适用于xml中每个类的超时,这样我们就可以研究如何改进这些类。