我对单元测试不是很熟悉,我知道它们对于代码质量非常重要,我想在我的项目中写一些。我最近遇到了一些问题。上下文是,我正在为我的Aclass编写testClassA,但是Aclass中的一些函数依赖于BClass。
BClass是一个实用函数,所以它有许多public static
函数。
AClass使用Bclass的函数:
public class Aclass{
public boolean Afunction()
{
String result = Bclass.Bfunction();
//do stuff with result
return true
}
}
public class Bclass{
public static String Bfunction()
{
//function code
}
}
我希望每次调用BClass.Bfunction时,我都可以返回我想要的东西,而不是在Bclass中真正执行真正的Bfunction,所以我的Aclass在我的测试中不依赖于其他类。有可能吗?
答案 0 :(得分:0)
一种方法将您的更改限制为仅仅Aclass,并消除了对Bclass的依赖(正如您所要求的)是提取和覆盖:
所以你修改过的Aclass看起来像这样:
public class Aclass {
public boolean Afunction() {
String result = doBfunction();
// do stuff with result
return true;
}
// This is your "extracted" method.
protected doBfunction() {
return Bclass.Bfunction();
}
}
并且您的测试类看起来像这样:
class AClassTest {
@Test
public void testAFunction() {
Aclass testObject = new TestableAclass();
boolean value = testObject.AFunction();
// now you can assert on the return value
}
class TestableAclass extends Aclass {
@Override
protected String doBfunction() {
// Here you can do whatever you want to simulate this method
return "some string";
}
}
}