我有一个公共抽象类Dog
,其子类为Cat
,Mouse
,@Test
public void test_cat() {Cat(name='Tom');}
@Test
public void test_mouse() {Mouse(name='Jerry');}
@Test
public void test_dog() {Dog(name='Spike');}
。我正在参数化测试,我想使用该类型作为参数。我关注this。有没有办法将类型存储在变量中?例如,我的测试可能是:
Object concreateType = Cat.class; concreteType(name="Tom")
我想对此进行参数化,以便具体类型位于变量中,然后实例化<div autofocus>
。
答案 0 :(得分:0)
我同意Joakim:test_cat
保留test_cat
并明确测试Cat
(等等)可能是最好的。
但是如果要对其进行泛化,可以使用Class
实例和反射,使用getConstructor
获取相关的构造函数,然后调用其newInstance
方法:
public void test(Class cls) {
Constructor c = cls.getConstructor(new Object[] { String.class });
Object instance = cls.newInstance("Tom");
// ...
}
致电:
testerObject.test(Cat.class);
显然,添加错误处理等。
您还可以从类对象中获取方法,因此您可以(例如)确保getName
返回名称。