A. 如何mock調用super的方法
據我說知: mock測試方法用於構造對象,而不是你說的方法 比如,你現在要調用資料庫,但這塊也許還沒完成,無法用orm框架進行映射,你就可以先new一些這樣的對象,將它們保存或當作參數傳入等 比如某介面中(UserDao)你有一個方法叫:queryUser(S...
B. java里有什麼辦法判斷一個Class是否為抽象類
若是判斷Class類是否為抽象類,可以試試Modifier里的靜態方法,裡面有很多,判斷是否是抽象,是否是靜態,是否是私有等等
Classc=Foo.class;
booleanisAbstract=Modifier.isAbstract(c.getModifiers());
C. JAVA 抽象方法的重寫
可以用兩種方法來解決這個問題:
第一種方法是先聲明一個抽象類,在其中聲明該抽象方法,然後在子類中實現該抽象方法代碼如下:
//抽象類
package ;
public abstract class Sohu {
public abstract boolean hg();
}
//抽象類子類實現該抽象方法類
package ;
public class SohuChild extends Sohu {
private String name;
private String pwd;
@Override
public boolean hg() {
if(name.equals("user")&&pwd.equals("1234")){return true;}
else return false;
}
}
//抽象類子類方式測試類
package ;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
SohuChild sohu=new SohuChild();
sohu.setName("user");
sohu.setPwd("1234");
System.out.println(sohu.hg());
}
}
第二中方法:定義介面,並在其中聲明抽象方法,然後在介面實現類中實現該抽象方法
代碼如下:
package ;
//介面
public interface Bai {
//介面中抽象方法
public abstract boolean hg();
}
//介面實現類
package ;
public class BaiImpl implements Bai {
private String name;
private String pwd;
@Override
public boolean hg() {
if(name.equals("user")&&pwd.equals("1234")){return true;}
else return false;
}
}
//下面是介面方式的測試類
package ;
public class Test {
public static void main(String[] args) {
BaiImpl =new BaiImpl();
.setName("user");
.setPwd("1234");
System.out.println(.hg());
}
}
請君測試代碼。
D. 什麼是抽象類和抽象方法
抽象類就是不能使用new方法進行實例化的類,即沒有具體實例對象的類。抽象類有點類似「模板」的作用,目的是根據其格式來創建和修改新的類。對象不能由抽象類直接創建,只可以通過抽象類派生出新的子類,再由其子類來創建對象。當一個類被聲明為抽象類時,要在這個類前面加上修飾符abstract。 在抽象類中的成員方法可以包括一般方法和抽象方法。抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數據類型、方法名稱和所需的參數,沒有方法體,也就是說抽象方法只需要聲明而不需要實現。當一個方法為抽象方法時,意味著這個方法必須被子類的方法所重寫,否則其子類的該方法仍然是abstract的,而這個子類也必須是抽象的,即聲明為abstract。 抽象類中不一定包含抽象方法,但是包含抽象方法的類一定要被聲明為抽象類。抽象類本身不具備實際的功能,只能用於派生其子類。抽象類中可以包含構造方法,但是構造方法不能被聲明為抽象。 抽象類不能用final來修飾,即一個類不能既是最終類又是抽象類。 abstract不能與private、static、final、native並列修飾同一個方法。 程序舉例:abstract class Animal //定義抽象類 abstract void eat(); //定義抽象方法}class Horse extends Animal //定義繼承Animal的子類 void eat() //重寫父類的抽象方法 }class Dog extends Animal void eat() }class test}運行結果: 馬吃草料! 狗吃骨頭!
E. 如何用PowerMock進行Spy一個抽象類
1、用下面的的Mockito的API,我成功地做到這一點:public class CodeWithPrivateMethod { public void meaningfulPublicApi() { if (doTheGamble("Whatever", 1
F. 如何mock靜態方法
因為Mockito使用繼承的方式實現mock的,用CGLIB生成mock對象代替真實的對象進行執行,為了mock實例的方法,你可以在subclass中覆蓋它,而static方法是不能被子類覆蓋的,所以Mockito不能mock靜態方法。
但PowerMock可以mock靜態方法,因為它直接在bytecode上工作,類似這樣:
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.moles.testng.PowerMockTestCase;
import org.testng.Assert;
import org.testng.annotations.Test;
@PrepareForTest(AbstractAnimal.class)
public class AbstractAnimalTest extends PowerMockTestCase {
G. .net中的抽象類和抽象方法,虛方法 詳解
如果一個類裡面有抽象方法,那麼這個類一定是抽象類,所謂抽象方法,也就是只有一個名稱定義而已,說白了,抽象方法沒有實際的行為,只定義了名稱。例子:abstract
public
void
function();//定義了一個名稱為function方法名的抽象方法。另外,如果繼承了抽象類,那麼必須重寫抽象類裡面的所有抽象方法。
虛方法,這個是為了給子類繼承重寫方法而修飾的,也就是如果一個方法是虛方法的話,那麼子類就可以重寫這個方法。
H. 如何用c#定義一個抽象類
1、聲明一個抽象方法使用abstract關鍵字。
2、一個類中可以包含一個或多個抽象方法。
3、抽象類中可以存在非抽象的方法。
4、抽象類不能被直接被實例化。
5、實現抽象類用「:」(冒號),實現抽象方法用override關鍵字。
6、抽象類可以被抽象類所繼承,結果仍是抽象類。
7、抽象方法被實現後,不能更改修飾符。
DEMO:
public abstract class Person
{
public abstract void SayHello();
public void about()
{
Console.WriteLine("Abstract Demo");
}
}
public class Student : Person
{
public override void SayHello()
{
Console.WriteLine("SayHello");
}
}
class MainClass
{
public static void Main()
{
new Student().SayHello();
}
}