簡體   English   中英

如何在java中為單元測試存根個體方法?

[英]How do you stub an individual method in java for unit testing?

我在一個正在寫一些字符串的類中有一個方法,它調用另一個執行相同操作的方法。 就像是:

void foo() {
  a += "xyx";
  bar();
}

void bar() {
  a += "abc";
}

出於單元測試的目的,我想分別測試foo和bar。 當我調用foo()或用其他方法替換它時,有沒有辦法防止bar運行?

創建一個覆蓋不執行任何操作的bar()的子類。

你為什么想這么做?

您可以使用方面攔截字節代碼級別的代碼(不明智); 你可以接受一個調用bar的對象: void foo(MyBarObject m) { a += "xyx"; m.bar(); } void foo(MyBarObject m) { a += "xyx"; m.bar(); }

但是,正如我所說,我不明白為什么這是有用的。 單元測試用於測試公共接口。 如果bar()是私有的或受保護的,那么它會通過你的調用和后來的斷言自動測試到foo()。 如果foo()和bar()都是公共的,那么很酷,請測試它們是否分離。

你能發一個真實的例子嗎? 你能改變測試中的代碼嗎? 等等。

有人可能會爭辯說上面的例子不是可測試的代碼。 相反,如果代碼是:

void foo() {
  a += "xyx";
}

void bar() {
  a += "abc";
}

void fooBar() {
  foo();
  bar();
}

單元測試很容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM