亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

@runWith注解起什么作用啊?

@runWith注解起什么作用?。?/p>

正在回答

8 回答

//?比如?這里有個配置類,在?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("樓上的某些評論,成功的解決了提出問題的人,典型的?國產思維。這可不好呀,都是自己人。");
????}
}

//?方式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);
????}
}





1 回復 有任何疑惑可以回復我~

根據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 ?DescriptiongetDescription()
???????????
abstract ?voidrun(RunNotifier?notifier)
??????????Run the tests for this runner.
?inttestCount()

其中有兩個抽象方法 getDescription 和 run。還有一個用來統計測試執行測試的普通方法 testCount。

那么所有想要通過擴展Junit的其他測試框架,都應遵循這個規范。

也就是兩個步驟

  1. 通過繼承 org.junit.runner.Runner 實現里面的抽象方法

  2. 通過注解注入你實現的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




0 回復 有任何疑惑可以回復我~

@RunWith(SpringJUnit4ClassRunner.class)使用了Spring的SpringJUnit4ClassRunner,以便在測試開始的時候自動創建Spring的應用上下文。其他的想創建spring容器的話,就得子啊web.xml配置classloder。 注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用啟動spring容器


4 回復 有任何疑惑可以回復我~
#1

慕慕8191769

剛好解答了我的疑惑
2018-05-26 回復 有任何疑惑可以回復我~

都知道是更改測試運行器。是在什么情況下使用更好呢。

0 回復 有任何疑惑可以回復我~

大概意思是更改使用的測試類為SpringJUnit4ClassRunner.class,使之適應spring。

1 回復 有任何疑惑可以回復我~

更改測試運行器

0 回復 有任何疑惑可以回復我~

樓上說的一點也沒用,樓主問的是作用--是讓什么東西做什么,你答的算是什么東西啊,

就像“@RunWith(JUnit4.class)就是指用JUnit4來運行"這句話,是什么讓Junit4來運行什么啊,

0 回復 有任何疑惑可以回復我~
#1

Wang_Yu

其實 "@RunWith就是一個運行器" 這一句話就已經足夠解答問題。我還額外多說了那么多。你理解不了就是你的問題了。
2016-11-30 回復 有任何疑惑可以回復我~
#2

慕粉3612357

人家好歹說了一些作用,而你什么都沒說
2017-09-29 回復 有任何疑惑可以回復我~
#3

12345hao

擋路不是你的本性,快走開,屁都放不出來還有資格說人家說的不好,我覺得人家是用最通俗的語言結合自己經驗說的,一看你就是剛從北大青鳥畢業的非專業學生
2017-11-02 回復 有任何疑惑可以回復我~
#4

慕數據5398891 回復 12345hao

哦 哥們什么地方畢業的啊?秀一波唄 本人電子科技大學畢業 一樣還是去北大青鳥學了半年不專業的知識 感覺對我受益頗多呢
2017-12-11 回復 有任何疑惑可以回復我~
#5

qq_弄臣_1 回復 12345hao

你成功的吸引了大家都來噴你
2018-09-05 回復 有任何疑惑可以回復我~
#6

theonec 回復 12345hao

兄弟很叼的樣子嗎
2019-03-31 回復 有任何疑惑可以回復我~
#7

我還會懷念過去 回復 12345hao

看到有人噴你我就放心了
2019-04-04 回復 有任何疑惑可以回復我~
#8

170的假兵長 回復 慕數據5398891

好意思說自己電子科大,你他媽不笑死我哈哈哈哈哈哈哈。我還斯坦福的呢
2019-08-15 回復 有任何疑惑可以回復我~
#9

170的假兵長 回復 12345hao

好想給你點贊,可惜慕課網沒這個功能好像
2019-08-15 回復 有任何疑惑可以回復我~
#10

weixin_慕前端6231507 回復 12345hao

hhhhhhhhhhhh
2019-10-13 回復 有任何疑惑可以回復我~
#11

branchse 回復 12345hao

青鳥咋滴你了
2019-12-16 回復 有任何疑惑可以回復我~
#12

SHA_DOW

可以自己試一下加和不加的情況就能夠理解了
2020-01-09 回復 有任何疑惑可以回復我~
#13

慕標9045768

樓上的,你們成功把提出問題的人給解決了 ,典型的國產思維
2020-11-19 回復 有任何疑惑可以回復我~
#14

慕標9045768 回復 慕標9045768

@Runwith 能很好的替代 junit 內置的 runner JUnit4, 這個runner 就是能使測試類的代碼在其中運行的一個class類。當使用 @RunWith(SpringJUnit4ClassRunner.class) 時,可以使用spring 的一些特性,比如 @ContextConfiguration(classes = Config.class) ,然后在類內部就可以用 @Autowired 注入 config中的的Bean ,進而在 test() 方法中使用了。
2020-11-19 回復 有任何疑惑可以回復我~
查看9條回復

@RunWith就是一個運行器

@RunWith(JUnit4.class)就是指用JUnit4來運行

@RunWith(SpringJUnit4ClassRunner.class),讓測試運行于Spring測試環境

@RunWith(Suite.class)的話就是一套測試集合,


19 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

@runWith注解起什么作用?。?/h1> 我要回答 關注問題

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號