4

すべての単体テストには、Spring アノテーションを含む同じヘッダーがあります。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring/spring-master.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@Transactional()

それらを基本クラスに移動し、すべてのテストがそれを拡張するようになりました:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring/spring-master.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@Transactional()
public class DomainObjectBaseTest {
...
public class SomeTest extends DomainObjectBaseTest {

すべてのテストを実行すると、DomainObjectBaseTest に対して次の結果が得られます。

java.lang.Exception: No runnable methods

私の質問は、どうすればそれを回避できますか? を削除することはでき@RunWithますが、この場合、注釈を他のすべてのテストに適用する必要があります。余分なコードが多すぎて、気に入らない。

おそらく、別の方法として、Spring グループ アノテーションで何らかの形で名前を付け、テストからグループを参照することができます。可能であれば教えてください。この場合、基本クラスをまったく削除します。

そしておそらく、このクラスをテストすべきではないことを伝える方法があります。JUnit4を使用しています。

4

1 に答える 1

11

基本クラスを抽象化します。問題は、それが抽象的ではないと私が信じていることです。そのため、テストランナーはそれを実行しようとし、この(IMHO愚かな)理由で失敗します。ただし、抽象クラスは無視されます。

于 2013-05-21T07:40:43.443 に答える