課程
/后端開發(fā)
/Java
/JUnit—Java單元測試必備工具
@runWith注解起什么作用???
2015-05-26
源自:JUnit—Java單元測試必備工具 4-2
正在回答
//?比如?這里有個配置類,在?src.main.java?包下面 @Slf4j @Configuration public?class?RestClientConfig?{ ????/** ?????*?支持多次使用?response.getBody()?讀取流,?更多詳情,請參考:https://blog.csdn.net/w1047667241/article/details/109823783 ?????*/ ????@Bean ????public?RestTemplate?restTemplate()?{ ????????RestTemplate?template?=?new?RestTemplate( ????????????????//?多次使用?getBody()?response?body ????????????????new?BufferingClientHttpRequestFactory(new?HttpComponentsClientHttpRequestFactory())); ????????return?template; ????} } //?你想在?測試類里面?使用這個?Bean?對象,有2種方式,1?是?注解?@Autowired?注入;2?是?代碼手動?getBean //方式1: @RunWith(SpringJUnit4ClassRunner.class)??//?在該類中運行測試,提供一些?spring?的某些特性支持 @ContextConfiguration(classes?=?RestClientConfig.class)?//?利用SpringJUnit4ClassRunner?注入?Bean public?class?RestTemplateConfigTest?{ ????@Autowired??//再比如這個特性,直接使用?@Autowired? ????RestTemplate?restTemplate; ????@Test ????public?void?test01()?{ ????????ResponseEntity<String>?responseEntity?=?restTemplate.postForEntity("http://httpbin.org/post",?null,?String.class); ????????System.out.println("樓上的某些評論,成功的解決了提出問題的人,典型的?國產(chǎn)思維。這可不好呀,都是自己人。"); ????} } //?方式2: //?不加?@RunWith()? public?class?RestTemplateConfigTest?{ ????@Test ????public?void?test02()?{ ????????ApplicationContext?context?=?new?AnnotationConfigApplicationContext(RestClientConfig.class); ????????RestTemplate?restTemplate?=?context.getBean(RestTemplate.class); ????????String?object?=?restTemplate.getForObject("https://不要解決提出問題的人.ok?param=yes",?String.class); ????} }
根據(jù)Junit源碼
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Inherited public?@interface?RunWith?{ ????Class<??extends?Runner>?value(); }
@RunWith注解實質(zhì)上是一個接口,是用來擴展Junit的Test Runner的。
那么什么是Test Runner呢?
比如 Suite , Parameterized 以及 SpringTest 都是`Test Runner` ,他們都是? `org.junit.runner.Runner `的子類。
abstract ?Description
getDescription()
abstract ?void
run(RunNotifier?notifier)
?int
testCount()
其中有兩個抽象方法 getDescription 和 run。還有一個用來統(tǒng)計測試執(zhí)行測試的普通方法 testCount。
那么所有想要通過擴展Junit的其他測試框架,都應(yīng)遵循這個規(guī)范。
也就是兩個步驟
通過繼承 org.junit.runner.Runner 實現(xiàn)里面的抽象方法
通過注解注入你實現(xiàn)的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,以便在測試開始的時候自動創(chuàng)建Spring的應(yīng)用上下文。其他的想創(chuàng)建spring容器的話,就得子啊web.xml配置classloder。 注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用啟動spring容器
慕慕8191769
都知道是更改測試運行器。是在什么情況下使用更好呢。
大概意思是更改使用的測試類為SpringJUnit4ClassRunner.class,使之適應(yīng)spring。
更改測試運行器
樓上說的一點也沒用,樓主問的是作用--是讓什么東西做什么,你答的算是什么東西啊,
就像“@RunWith(JUnit4.class)就是指用JUnit4來運行"這句話,是什么讓Junit4來運行什么啊,
Wang_Yu
慕粉3612357
12345hao
慕數(shù)據(jù)5398891 回復 12345hao
qq_弄臣_1 回復 12345hao
theonec 回復 12345hao
我還會懷念過去 回復 12345hao
170的假兵長 回復 慕數(shù)據(jù)5398891
170的假兵長 回復 12345hao
weixin_慕前端6231507 回復 12345hao
branchse 回復 12345hao
SHA_DOW
慕標9045768
慕標9045768 回復 慕標9045768
@RunWith就是一個運行器
@RunWith(JUnit4.class)就是指用JUnit4來運行
@RunWith(SpringJUnit4ClassRunner.class),讓測試運行于Spring測試環(huán)境
@RunWith(Suite.class)的話就是一套測試集合,
舉報
Java單元測試利器,提升Java代碼質(zhì)量,工作效率不用愁
1 回答@runWith的作用是什么
2 回答Suite.class是自己編寫的嗎?為啥我Runwith(Suite.class)報錯啊
1 回答@runwith(xx.class)是測試類的名字去掉test寫到里面嗎
3 回答junit4不能用怎么解決
2 回答老師用的什么鍵盤?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2020-11-19
2020-03-08
根據(jù)Junit源碼
@RunWith注解實質(zhì)上是一個接口,是用來擴展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。還有一個用來統(tǒng)計測試執(zhí)行測試的普通方法 testCount。
那么所有想要通過擴展Junit的其他測試框架,都應(yīng)遵循這個規(guī)范。
也就是兩個步驟
通過繼承 org.junit.runner.Runner 實現(xiàn)里面的抽象方法
通過注解注入你實現(xiàn)的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
2017-09-12
@RunWith(SpringJUnit4ClassRunner.class)使用了Spring的SpringJUnit4ClassRunner,以便在測試開始的時候自動創(chuàng)建Spring的應(yīng)用上下文。其他的想創(chuàng)建spring容器的話,就得子啊web.xml配置classloder。 注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用啟動spring容器
2017-08-02
都知道是更改測試運行器。是在什么情況下使用更好呢。
2017-07-23
大概意思是更改使用的測試類為SpringJUnit4ClassRunner.class,使之適應(yīng)spring。
2017-06-12
更改測試運行器
2016-10-01
樓上說的一點也沒用,樓主問的是作用--是讓什么東西做什么,你答的算是什么東西啊,
就像“@RunWith(JUnit4.class)就是指用JUnit4來運行"這句話,是什么讓Junit4來運行什么啊,
2015-05-26
@RunWith就是一個運行器
@RunWith(JUnit4.class)就是指用JUnit4來運行
@RunWith(SpringJUnit4ClassRunner.class),讓測試運行于Spring測試環(huán)境
@RunWith(Suite.class)的話就是一套測試集合,