假设您要扩展一些第三方库类,只需向其添加便捷方法(例如,您可以使用默认参数调用继承方法)。
使用jUnit / jMock,是否可以编写一个断言/模拟期望来测试是否调用了正确的继承方法?
例如,像这样:
class SomeClass extends SomeLibraryClass {
public String method(String code) {
return method(code, null, Locale.default());
}
}
如何断言method
被调用?
答案 0 :(得分:4)
您可以在单元测试中创建一个实际告诉您的另一个子类:
public class MyTest {
boolean methodCalled = false;
@Test
public void testMySubclass(){
TestSomeClass testSomeClass = new TestSomeClass();
// Invoke method on testSomeclass ...
assertTrue( methodCalled);
}
class TestSomeClass extends SomeClass{
public String method(String code){
methodCalled = true;
}
}
}
答案 1 :(得分:2)
单元测试对于验证给定方法的功能更有用,而不是断言覆盖率。更多地关注所调用的方法的单元测试更多地了解他们正在测试的类而不是他们可能应该考虑的类,更不用说会让读者感到困惑。
答案 2 :(得分:1)
在这种情况下只编写集成测试可能确实更好,但如果你真的想要进行单元测试,你可以像在任何其他情况下一样轻松地使用它:
public class SomeClassTest
{
@Test
public void testMethod()
{
final String code = "test";
new Expectations()
{
SomeLibraryClass mock;
{
mock.method(code, null, (Locale) any);
}
};
new SomeClass().method(code);
}
}
此测试使用JMockit模拟API。
答案 3 :(得分:0)