Spring-testフレームワーク(注釈)学習手札一


1、@RunWith:テスター、JUnitのすべてのテスターメソッドはテスターが実行します.


(1)@RunWith(Suite.class)


JUnitを使用してテストキットを実行する役割を果たします.Suite類はJUnitが持参したもので、スイートという意味で、その名の通りのものです.これにより、複数の関連するテストクラスを1つのテストキットとして一緒にテストすることができます.
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({ TestA.class, TestB.class, /*Any test class you want to run*/})
public class TestSuite {
    // Please note this case won't run. It will only run cases which
    // are configured in @Suite.SuiteClasses
    @Test
    public void testPrint() {
        System.out.println("Hello");
    }
}

@RunWithはSuiteクラスを指定しており、このTestSuiteクラスがスイートであることを示しています[email protected]
sesは、実行するテストクラスを指定します(これらのクラスのすべての使用例が実行されます).
なお、このTestSuiteクラス自体の使用例では(上記のtestPrint()メソッドのように)実行されません.
(2)@RunWith(SpringJUnit4ClassRunner.class)
Springプロジェクトのユニットテストについて、JUnitでSpringのプロファイルをロードしてContextの初期化を完了し、ContextからBeanを取り出してテストを完了するという書き方を見たことがあるかもしれません.
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class UserManagerTest {
  @Autowired
  ApplicationContext ctx;

  @Test
  public void testAddUser() {
    try {
      UserManager userManager = ctx.getBean(UserManager.class); 
      userManager.addUser();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 }

// mock 
package test.controller.LogsController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.naton.controller.LogsController;
import com.naton.pojo.example.ParamExample;
@RunWith(SpringJUnit4ClassRunner.class)  // junit4   
@ContextConfiguration({"classpath:applicationContext.xml"})
public class SearchTest {
    @Autowired
    LogsController longogsController;
    
    @Test
    public void testGetList() {
        ParamExample param = new ParamExample();
        longogsController.search(param);
    }

}

参照先:http://sparkgis.com/java/2017/10/junit高級用法のrunwith-原-junit高級用法のrunwith-渡航者/
2、@ContextConfiguration:プロファイルを導入します.Spring-Testのこのプロファイルはclasspathしか認識していません.仕方がありません.これらのファイルをルートディレクトリにコピーしなければなりません.
単一ファイル:@ContextConfiguration({"classpath:applicationContext.xml"})
@ContextConfiguration(locations = { "classpath:applicationContext.xml"})
@ContextConfiguration(classes = SimpleConfiguration.class)
複数ファイルの場合、{}:@ContextConfiguration(locations={"classpath*:/spring 1.xml","classpath*:/spring 2.xml"})を使用できます.
@ContextConfiguration(classes = {AppConfig.class, TestAppConfig.class})
3、@Autowired:メンバー変数、メソッド、コンストラクション関数に寸法を付けて、自動アセンブリを完了する関数です.
例:
@Autowired
AnnController    annController;// 

@Autowired   private AnnService annService; //AnnService 

@Autowired
@Qualifier("BMW")      //括号里这个是实现的子类的类名
private Car car; //car , 


4、@Transactional
@TransactionConfiguration:事物配置
     (transactionManager = "transactionManager", defaultRollback = true)
ここでのトランザクションは、プロファイル内のトランザクションコントローラ(transactionManager="transactionManager")に関連付けられ、自動ロールバック(defaultRollback=true)を指定します.このようにして操作するデータはデータベースを汚染しません!
@BeforeTransaction
注釈されたpublic voidメソッドは、@Transactional注釈によって構成されたテストメソッドのトランザクションの開始前に実行されるべきであることを示します.
@AfterTransaction
注釈されたpublic voidメソッドは、@Transactional注釈によって構成されたテストメソッドのトランザクションの終了後に実行されるべきであることを示します.
5,@NotTransactional:テストメソッドがトランザクションで実行されない必要があることを示します.
6、@Repeat
注記されたテスト方法は繰り返し実行する必要があることを示します.実行回数は注記で宣言されます.
注意繰り返し実行範囲には、テストメソッド自体の実行と、fixtureをテストするset upまたはtear downが含まれます.
@Repeat(10) public void testProcessRepeatedly() {//…
}
参照先:https://www.cnblogs.com/minideas/archive/2011/07/21/2112964.html
         http://snowolf.iteye.com/blog/588351#comments