Tôi muốn thử phương pháp được bảo vệ được kế thừa. Tôi không thể gọi phương thức này trực tiếp từ mã java vì nó được kế thừa từ lớp trong gói khác. Tôi không thể tìm thấy một cách để xác định phương pháp này để còn sơ khai ở trong when(...)
phương pháp được bảo vệ bằng mocking
package a;
public class A() {
protected int m() {}
}
package b;
public class B extends a.A {
// this class currently does not override m method from a.A
public asd() {}
}
// test
package b;
class BTest {
@Test
public void testClass() {
B instance = PowerMockito.spy(new B());
PowerMockito.when(instance, <specify a method m>).thenReturn(123);
//PowerMockito.when(instance.m()).thenReturn(123); -- obviously does not work
}
}
Tôi nhìn PowerMockito.when
ghi đè và điều này dường như họ là tất cả chỉ phương pháp tư nhân!
Cách chỉ định phương pháp được bảo vệ?
@AndroidKiller, mã được cập nhật với tên lớp. Trên thực tế họ có thể từ Mockito, nhưng tôi sử dụng powermock và những phương pháp này có ý nghĩa tương tự có –
Đó là lý do tại sao chúng ta nên luôn luôn thích thành phần hơn thừa kế. Nếu bạn không thể chỉ xác định lại phương thức này trong mã được thử nghiệm của mình, giống như bạn sẽ làm với mã cũ. – Brice