@runWith注解起什么作用啊?
@runWith注解起什么作用?。?/p>
@runWith注解起什么作用?。?/p>
2015-05-26
根據Junit源碼
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Inherited public?@interface?RunWith?{ ????Class<??extends?Runner>?value(); }
@RunWith注解實質上是一個接口,是用來擴展Junit的Test Runner的。
那么什么是Test Runner呢?
比如 Suite , Parameterized 以及 SpringTest 都是`Test Runner` ,他們都是? `org.junit.runner.Runner `的子類。
abstract ?Description | getDescription() ??????????? |
abstract ?void | run(RunNotifier?notifier) ??????????Run the tests for this runner. |
?int | testCount() |
其中有兩個抽象方法 getDescription 和 run。還有一個用來統計測試執行測試的普通方法 testCount。
那么所有想要通過擴展Junit的其他測試框架,都應遵循這個規范。
也就是兩個步驟
通過繼承 org.junit.runner.Runner 實現里面的抽象方法
通過注解注入你實現的Test Runner 比如:@RunWith(YourRunnerImplement.class)
這也就是RunWith 這個Junit注解的來龍去脈,希望 幫到你。
參考文檔:
http://junit.sourceforge.net/javadoc/org/junit/runner/Runner.html
http://junit.sourceforge.net/javadoc/org/junit/runner/RunWith.html
@RunWith(SpringJUnit4ClassRunner.class)使用了Spring的SpringJUnit4ClassRunner,以便在測試開始的時候自動創建Spring的應用上下文。其他的想創建spring容器的話,就得子啊web.xml配置classloder。 注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用啟動spring容器
都知道是更改測試運行器。是在什么情況下使用更好呢。
大概意思是更改使用的測試類為SpringJUnit4ClassRunner.class,使之適應spring。
更改測試運行器
樓上說的一點也沒用,樓主問的是作用--是讓什么東西做什么,你答的算是什么東西啊,
就像“@RunWith(JUnit4.class)就是指用JUnit4來運行"這句話,是什么讓Junit4來運行什么啊,
@RunWith就是一個運行器
@RunWith(JUnit4.class)就是指用JUnit4來運行
@RunWith(SpringJUnit4ClassRunner.class),讓測試運行于Spring測試環境
@RunWith(Suite.class)的話就是一套測試集合,
舉報
2020-11-19