我有一个abstract
类,其中包含没有抽象方法......如何测试这个?我可以简单地将它导入测试类并照常开展业务吗?
示例:
public abstract class SomeAbstractClass implements SomeOtherClass {
// Some variables defined here
private static final String dbUrl = System.getProperty("db.url");
// Some public methods
public String doSomethingToUrl(String url) {
url = url + "/takeMeSomewhereNice";
}
}
假设我传递db.url
localhost:8080
的arg,我想测试doSomethingToUrl
方法确实输出了新字符串...它是否仍然采用这种格式?
public class TestUrl {
SomeAbstractClass sac = new SomeAbstractClass();
@Test
public void testUrlChange() throws Exception {
String testUrl = "localhost:8080";
assertThat("localhost:8080/takeMeSomewhereNice",
sac.doSomethingToUrl(testUrl));
}
}
答案 0 :(得分:7)
您将无法创建仅SomeAbstractClass
的实例,不能 - 但您可以创建一个匿名子类:
private SomeAbstractClass sac = new SomeAbstractClass() {};
你可能只想为了测试而创建一个具体的子类 - 所以只要你做添加抽象方法,你就需要把它们放在那里。
虽然我怀疑你可以使用一个模拟框架,但我怀疑它会增加更多的复杂性以获得一点好处,除非你需要检查在什么情况下调用抽象方法。 (模拟非常适合交互测试,但对于其他目的来说可能很脆弱。)它也可以轻松地产生更混乱的错误消息(由于涉及基础设施)。
答案 1 :(得分:0)