Nach der Antwort von @patrick-desjardins habe ich die abstrakte und ihre Implementierungsklasse zusammen mit @Test
wie folgt:
Abstrakte Klasse - ABC.java
import java.util.ArrayList;
import java.util.List;
public abstract class ABC {
abstract String sayHello();
public List<String> getList() {
final List<String> defaultList = new ArrayList<>();
defaultList.add("abstract class");
return defaultList;
}
}
Als Abstrakte Klassen können nicht instanziiert werden, aber sie können unterklassifiziert werden , konkrete Klasse DEF.java ist wie folgt:
public class DEF extends ABC {
@Override
public String sayHello() {
return "Hello!";
}
}
@Test Klasse, um sowohl abstrakte als auch nicht-abstrakte Methoden zu testen:
import org.junit.Before;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.contains;
import java.util.Collection;
import java.util.List;
import static org.hamcrest.Matchers.equalTo;
import org.junit.Test;
public class DEFTest {
private DEF def;
@Before
public void setup() {
def = new DEF();
}
@Test
public void add(){
String result = def.sayHello();
assertThat(result, is(equalTo("Hello!")));
}
@Test
public void getList(){
List<String> result = def.getList();
assertThat((Collection<String>) result, is(not(empty())));
assertThat(result, contains("abstract class"));
}
}