[英]Is it possible to unit test a method which have setter and getter using mockito and powermock
[英]How do I write unit test for a setter method which does not have a getter method?
我有一個看起來像這樣的 class
public class Assignment {
protected String AssName;
public void SetAssSpec(String theSpec){
this.AssSpec = theSpec;
}
}
這是我的測試 class
class AssignmentTest {
@Test
void testSetAssSpec(){
String assignmentName = "CSE101";
Assignment cseAssigment = new Assignment();
cseAssigment.SetAssSpec(String assignmentName);
//Now what?
}
}
由於沒有getter方法。
訪問集合字符串的另一種方法是cseAssigment.AssName
但問題是 AssName 受到保護,因此我無法訪問它。
我將如何測試它? 我是測試和 Junit 的新手。 那么,請告訴我這是否有意義?
您可以聲明一個具有 getter 的本地子類:
@Test
void testSetAssSpec(){
class SubAssigment extends Assignment {
String getter() { return AssName; }
}
String assignmentName = "CSE101";
SubAssigment cseAssigment = new SubAssigment();
cseAssigment.SetAssSpec(String assignmentName);
assertEquals(assignmentName, cseAssignment.getter());
}
但是,正如Kayaman指出的那樣,您可能真的不需要測試 Java 分配是否有效。
此示例中的問題是它沒有顯示設置后如何使用該值。 這就是如何測試它的線索。
如果不使用,setter 是無用的,也應該被刪除。
它是受保護的,所以我猜一個子類正在使用它。 在這種情況下,我會將該方法與測試子類一起使用。
如果它是通過反射使用的,我也會通過反射來測試它。
測試 getter 方法會有點矯枉過正,但是如果您想檢查/測試 object 中沒有 getter 的私有變量的值,您可以使用反射
Field f = obj.getClass().getDeclaredField("AssName"); //NoSuchFieldException
f.setAccessible(true);
String assignmentName = (String) f.get(obj);
String assignmentName = "CSE101";
Assignment cseAssigment = new Assignment();
cseAssigment.SetAssSpec(String assignmentName);
assertEquals(AssSpec ,ReflectionTestUtils.getField(cseAssigment, "AssSpec"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.