導航:首頁 > 知識科普 > mock怎麼修改方法里常量

mock怎麼修改方法里常量

發布時間:2022-05-24 16:21:20

怎麼用mockito mock 單例

當被問到要實現一個單例模式時,很多人的第一反應是寫出如下的代碼,包括教科書上也是這樣教我們的。一二三四5陸漆吧9一0一一publicclassSingleton{;privateSingleton(){}(){if(instance==null){instance=newSingleton();}returninstance;}}這段代碼簡單明了,而且使用了懶載入模式,但是卻存在致命的問題。當有多個線程並行調用getInstance()的時候,就會創建多個實例。也就是說在多線程下不能正常工作。懶漢式,線程安全為了解決上面的問題,最簡單的方法是將整個getInstance()方法設為同步(synchronized)。一二三四5陸(){if(instance==null){instance=newSingleton();}returninstance;}雖然做到了線程安全,並且解決了多實例的問題,但是它並不高效。因為在任何時候只能有一個線程調用getInstance()方法。但是同步操作只需要在第一次調用時才被需要,即第一次創建單例實例對象時。這就引出了雙重檢驗鎖。雙重檢驗鎖雙重檢驗鎖模式(doublecheckedlockingpattern),是一種使用同步塊加鎖的方法。程序員稱其為雙重檢查鎖,因為會有兩次檢查instance==null,一次是在同步塊外,一次是在同步塊內。為什麼在同步塊內還要再檢驗一次?因為可能會有多個線程一起進入同步塊外的if,如果在同步塊內不進行二次檢驗的話就會生成多個實例了。一二三四5陸漆吧9一(){if(instance==null){//SingleCheckedsynchronized(Singleton.class){if(instance==null){//DoubleCheckedinstance=newSingleton();}}}returninstance;}這段代碼看起來很完美,很可惜,它是有問題。主要在於instance=newSingleton()這句,這並非是一個原子操作,事實上在JVM中這句話大概做了下面三件事情。給instance分配內存調用Singleton的構造函數來初始化成員變數將instance對象指向分配的內存空間(執行完這步instance就為非null了)但是在JVM的即時編譯器中存在指令重排序的優化。也就是說上面的第二步和第三步的順序是不能保證的,最終的執行順序可能是一-二-三也可能是一-三-二。如果是後者,則在三執行完畢、二未執行之前,被線程二搶佔了,這時instance已經是非null了(但卻沒有初始化),所以線程二會直接返回instance,然後使用,然後順理成章地報錯。我們只需要將instance變數聲明成volatile就可以了。一二三四5陸漆吧9一0一一一二一三一四一5一陸publicclassSingleton{;//聲明成volatileprivateSingleton(){}(){if(instance==null){synchronized(Singleton.class){if(instance==null){instance=newSingleton();}}}returninstance;}}有些人認為使用volatile的原因是可見性,也就是可以保證線程在本地不會存有instance的副本,每次都是去主內存中讀取。但其實是不對的。使用volatile的主要原因是其另一個特性:禁止指令重排序優化。也就是說,在volatile變數的賦值操作後面會有一個內存屏障(生成的匯編代碼上),讀操作不會被重排序到內存屏障之前。比如上面的例子,取操作必須在執行完一-二-三之後或者一-三-二之後,不存在執行到一-三然後取到值的情況。從「先行發生原則」的角度理解的話,就是對於一個volatile變數的寫操作都先行發生於後面對這個變數的讀操作(這里的「後面」是時間上的先後順序)。但是特別注意在Java5以前的版本使用了volatile的雙檢鎖還是有問題的。其原因是Java5以前的JMM(Java內存模型)是存在缺陷的,即時將變數聲明成volatile也不能完全避免重排序,主要是volatile變數前後的代碼仍然存在重排序問題。這個volatile屏蔽重排序的問題在Java5中才得以修復,所以在這之後才可以放心使用volatile。相信你不會喜歡這種復雜又隱含問題的方式,當然我們有更好的實現線程安全的單例模式的法。餓漢式staticfinalfield這種方法非常簡單,因為單例的實例被聲明成static和final變數了,在第一次載入類到內存中時就會初始化,所以創建實例本身是線程安全的。一二三四5陸漆吧9一0publicclassSingleton{//類載入時就初始化=newSingleton();privateSingleton(){}(){returninstance;}}這種寫法如果完美的話,就沒必要在啰嗦那麼多雙檢鎖的問題了。缺點是它不是一種懶載入模式(lazyinitialization),單例會在載入類後一開始就被初始化,即使客戶端沒有調用getInstance()方法。餓漢式的創建方式在一些場景中將無法使用:譬如Singleton實例的創建是依賴參數或者配置文件的,在getInstance()之前必須調用某個方法設置參數給它,那樣這種單例寫法就無法使用了。靜態內部類staticnestedclass我比較傾向於使用靜態內部類的方法,這種方法也是《EffectiveJava》上所推薦的。一二三四5陸漆吧9publicclassSingleton{{=newSingleton();}privateSingleton(){}(){returnSingletonHolder.INSTANCE;}}這種寫法仍然使用JVM本身機制保證了線程安全問題;由於SingletonHolder是私有的,除了getInstance()之外沒有法訪問它,因此它是懶漢式的;同時讀取實例的時候不會進行同步,沒有性能缺陷;也不依賴JDK版本。枚舉Enum用枚舉寫單例實在太簡單了!這也是它最大的優點。下面這段代碼就是聲明枚舉實例的通常做法。一二三publicenumEasySingleton{INSTANCE;}我們可以通過EasySingleton.INSTANCE來訪問實例,這比調用getInstance()方法簡單多了。創建枚舉默認就是線程安全的,所以不需要擔心doublecheckedlocking,而且還能防止反序列化導致重新創建新的對象。但是還是很少看到有人這樣寫,可能是因為不太熟悉吧。總結一般來說,單例模式有五種寫法:懶漢、餓漢、雙重檢驗鎖、靜態內部類、枚舉。上述所說都是線程安全的實現,文章開頭給出的第一種方法不算正確的寫

❷ C# 單元測試 MOQ 怎麼MOCK

你想測試C類的方法那就直接在C類方法名上右鍵單元測試就行了啊

❸ mock怎麼使用道具

1.mock的頁面的左下角上會一排的圖形,然後右擊一下那個橢圓形的圖形,就好出現一小排的幾個圖形,然後用滑鼠點上去查看一下是什麼文字,查看完畢之後,單擊一下道具就完成了。
2.Mock說白了就是打樁(Stub)或則模擬,當你調用一個不好在測試中創建的對象時,Mock框架為你模擬一個和真實對象類似的替身來完成相應的行為。
3.mock主要的作用就是解決依賴問題,達到解耦作用當我們測試某個目標介面(模塊)時,該介面依賴其他介面,當被依賴的介面未開發完成時,可以用mock模擬被依賴介面,完成目標介面的測試。
4.mock的優點是成本低,使用簡單,只需要學習 Mock.js 模板語法。不受網路影響。改動 Mock 能夠快速看到效果。
5.mock的缺點就是Mock 代碼與業務代碼耦合高,上線容易遺漏測試代碼,為代碼偷偷埋下一顆地雷。無法快速響應文檔改動,保持Mock 返回數據與文檔一致。只有前端開發人員能用到 Mock,無法與其他部門人員協同工作。沒有 API 請求,不夠真實。

❹ mock測試方法,後面的方法依賴於前面的結果怎麼測

mock測試方法用於構造對象,而不是你說的方法
比如,你現在要調用資料庫,但這塊也許還沒完成,無法用orm框架進行映射,你就可以先new一些這樣的對象,將它們保存或當作參數傳入等
比如某介面中(UserDao)你有一個方法叫:queryUser(String name),但你的真正實現未完成,你就可以先寫一個Mock類,MockUserDaoImpl
queryUser(String name){
User user = new User();
user.setName...
user.setPassword...
}

你說的兩種方法,不需要mock,直接調用方法,傳入參數,然後利用斷言
assert*

如何用python 來mock一個web響應

什麼是mock?
mock在翻譯過來有模擬的意思。這里要介紹的mock是輔助單元測試的一個模塊。它允許您用模擬對象替換您的系統的部分,並對它們已使用的方式進行斷言。

在Python2.x 中 mock是一個單獨模塊,需要單獨安裝。
> pip install -U mock
在Python3.x中,mock已經被集成到了unittest單元測試框架中,所以,可以直接使用。

可能你和我初次接觸這個概念的時候會有這樣的疑問:把要測的東西都模擬掉了還測試什麼呢?
但在,實際生產中的項目是非常復雜的,對其進行單元測試的時候,會遇到以下問題:
介面的依賴
外部介面調用
測試環境非常復雜
單元測試應該只針對當前單元進行測試, 所有的內部或外部的依賴應該是穩定的, 已經在別處進行測試過的.使用mock 就可以對外部依賴組件實現進行模擬並且替換掉, 從而使得單元測試將焦點只放在當前的單元功能。

簡單的例子
我們先從最簡單例子開始。
molar.py

#molar.py

class Count():

def add(self):
pass

這里要實現一個Count計算類,add() 方法要實現兩數相加。但,這個功能我還沒有完成。這時就可以藉助mock對其進行測試。
mock_demo01.py

from unittest import mock
import unittest

from molar import Count

# test Count class
class TestCount(unittest.TestCase):

def test_add(self):
count = Count()
count.add = mock.Mock(return_value=13)
result = count.add(8,5)
self.assertEqual(result,13)

if __name__ == '__main__':
unittest.main()

count = Count()
首先,調用被測試類Count() 。

count.add = mock.Mock(return_value=7)
通過Mock類模擬被調用的方法add()方法,return_value 定義add()方法的返回值。

result = count.add(2,5)
接下來,相當於在正常的調用add()方法,傳兩個參數2和5,然後會得到相加的結果7。然後,7的結果是我們在上一步就預先設定好的。

self.assertEqual(result,7)
最後,通過assertEqual()方法斷言,返回的結果是否是預期的結果7。
運行測試結果:

> python3 mock_demo01.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

這樣一個用例就在mock的幫助下編寫完成,並且測試通過了。

完成功能測試
再接下來完成mole.py文件中add()方法。

#mole.py

class Count():

def add(self, a, b):
return a + b

然後,修改測試用例:

from unittest import mock
import unittest
from mole import Count

class MockDemo(unittest.TestCase):

def test_add(self):
count = Count()
count.add = mock.Mock(return_value=13, side_effect=count.add)
result = count.add(8, 8)
print(result)
count.add.assert_called_with(8, 8)
self.assertEqual(result, 16)

if __name__ == '__main__':
unittest.main()

count.add = mock.Mock(return_value=13, side_effect=count.add)
side_effect參數和return_value是相反的。它給mock分配了可替換的結果,覆蓋了return_value。簡單的說,一個模擬工廠調用將返回side_effect值,而不是return_value。
所以,設置side_effect參數為Count類add()方法,那麼return_value的作用失效。

result = count.add(8, 8)
print(result)
這次將會真正的調用add()方法,得到的返回值為16(8+8)。通過print列印結果。

assert_called_with(8,8)
檢查mock方法是否獲得了正確的參數。

解決測試依賴
前面的例子,只為了讓大家對mock有個初步的印象。再接來,我們看看如何mock方法的依賴。
例如,我們要測試A模塊,然後A模塊依賴於B模塊的調用。但是,由於B模塊的改變,導致了A模塊返回結果的改變,從而使A模塊的測試用例失敗。其實,對於A模塊,以及A模塊的用例來說,並沒有變化,不應該失敗才對。
這個時候就是mock發揮作用的時候了。通過mock模擬掉影響A模塊的部分(B模塊)。至於mock掉的部分(B模塊)應該由其它用例來測試。

# function.py
def add_and_multiply(x, y):
addition = x + y
multiple = multiply(x, y)
return (addition, multiple)

def multiply(x, y):
return x * y

然後,針對 add_and_multiply()函數編寫測試用例。func_test.py

import unittest
import function

class MyTestCase(unittest.TestCase):

def test_add_and_multiply(self):
x = 3
y = 5
addition, multiple = function.add_and_multiply(x, y)
self.assertEqual(8, addition)
self.assertEqual(15, multiple)

if __name__ == "__main__":
unittest.main()

運行結果:

> python3 func_test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

目前運行一切正確常,然而,add_and_multiply()函數依賴了multiply()函數的返回值。如果這個時候修改multiply()函數的代碼。
……
def multiply(x, y):
return x * y + 3

這個時候,multiply()函數返回的結果變成了x*y加3。
再次運行測試:

> python3 func_test.py
F
======================================================================
FAIL: test_add_and_multiply (__main__.MyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "fun_test.py", line 19, in test_add_and_multiply
self.assertEqual(15, multiple)
AssertionError: 15 != 18

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (failures=1)

測試用例運行失敗了,然而,add_and_multiply()函數以及它的測試用例並沒有做任何修改,罪魁禍首是multiply()函數引起的,我們應該把 multiply()函數mock掉。

import unittest
from unittest.mock import patch
import function

class MyTestCase(unittest.TestCase):

@patch("function.multiply")
def test_add_and_multiply2(self, mock_multiply):
x = 3
y = 5
mock_multiply.return_value = 15
addition, multiple = function.add_and_multiply(x, y)
mock_multiply.assert_called_once_with(3, 5)

self.assertEqual(8, addition)
self.assertEqual(15, multiple)

if __name__ == "__main__":
unittest.main()

@patch("function.multiply")
patch()裝飾/上下文管理器可以很容易地模擬類或對象在模塊測試。在測試過程中,您指定的對象將被替換為一個模擬(或其他對象),並在測試結束時還原。
這里模擬function.py文件中multiply()函數。

def test_add_and_multiply2(self, mock_multiply):
在定義測試用例中,將mock的multiply()函數(對象)重命名為 mock_multiply對象。

mock_multiply.return_value = 15
設定mock_multiply對象的返回值為固定的15。

ock_multiply.assert_called_once_with(3, 5)
檢查ock_multiply方法的參數是否正確。

再次,運行測試用例,通過!

---------------------------------------------------

❻ jmockit怎麼mock 異常後面跟參數

做過幾篇 JMockit 使用 Expectations 來 Mock 方法,私有方法,私有屬性的的日誌,今天工作上突然有個需求是要
Mock 異常。現在再也不能為了跑個單元測試而去拔下網線了,也不該人為的去製造其他混亂來測試。開始是想能不能用 Expectations 來
Mock 異常,尚未發現相關的屬性可以設置,沒有類似 result 那樣的屬性,比如想像中有個 exception/throwable 屬性:

new Expectations(MyService.class, ExternalService.class) {
{
ExternalService.fetchData();

throwable = new NetworkException("No IPAddress ");
} };

可是沒有 throwable 個屬性,至少我還不知道如何用 Expectations 來 Mock 異常,此路不通,所以只得另闢溪徑。我們可以直接 new MockUp 來創建類,這比創建一個 MockClass 來得輕量級些。

下面是一個完整例子,由四個類構成,今次列出

1. 要拋出的異常類 NetworkException.java

package cc.unmi;

public class NetworkException extends RuntimeException {
public NetworkException(String message) {
super(message);
}
}

2. 被測試類 MyService.java

package cc.unmi;

public class MyService {
public static String fetchData(String name) {
return ExternalService.fetchByHttp(name);
}
}

調用 ExternalService.fetchByHttp() 方法,我們的測試用例將要 Mock 住這個方法,並拋出 NetworkException 異常。

3. 外部類,待 Mock 的 ExternalService.java

package cc.unmi;

public class ExternalService {
public static String fetchByHttp(String name) {
String result = null;
try {
// do something
} catch (Exception ex) {
throw new NetworkException(ex.getMessage());
}
return result;
}
}

這是個示例方法,就上面的代碼正常執行時肯定不會拋出 NetworkException 異常。我們假定在 //do something 的代碼可能會拋出 NetworkException 異常,但我們可以在 Mock 方法中立即呈現出這個異常來。

本文原始鏈接 http://unmi.cc/jmockit-how-to-mock-excepction/
, 來自隔葉黃鶯 Unmi Blog

4. 測試類 MyService.java,並完成異常的 Mock

package cc.unmi;

import mockit.Mock;
import mockit.MockUp;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

public class MyServiceTest {

@Rule
public ExpectedException expectedEx = ExpectedException.none();

@Test
public void testFetchData() {
new MockUp<ExternalService>() {
@Mock
public String fetchByHttp(String name) {
throw new NetworkException("No IPAddress");
}
};

expectedEx.expect(NetworkException.class);
expectedEx.expectMessage("No IPAddress");

MyService.fetchData("Yanbin");
}
}

這里用 new MockUp<>(){@Mock...}
的方式來 Mock 方法,我們也可以用 @MockClass..@Mock
的方式來創建 Mock 類/方法,但要笨重些。目前我們項目中基本摒棄了用 @MockClass 創建外部 Mock 類的做法,因為一般 Mock 類一般是與某一個測試方法緊密聯系著的。

也要注意到 fetchByHttp() 本是個靜態方法,但此處不能寫成 public String static fetchByHttp(), 但去掉 static 也不會影響到 Mock 的效果。

JUnit 關於異常的測試可以參考 JUnit 4 如何正確測試異常


測試運行成功,能夠斷言到所期待的異常類型和消息。

下面為演示 Mock 異常的正確而有效性,故意把 expectedEx.epectMessage("No IPAddress")
改成 expectedEx.epectMessage("NoNo IPAddress")
,這樣 JUnit 更能爆出有助於理解的錯誤信息來

上面的錯誤信息告訴我們

第一個斷言 expectedEx.expect(NetworkException.class)
是成功的

期待錯誤消息 NoNo IPAddress
,但得到的是 No IPAddress
,這正好從反面說明了我們 Mock 異常是成功的。

❼ mockplus怎麼修改手機尺寸

方法/步驟

首先我們需要安裝mockplus的客戶端,其實在Web也可以製作,不過客戶端方便一下。然後點擊進入,可以選擇新建一個項目,也可以看他的一些例子學習一下別人的設計

新建之後,會進入一個選擇界面,上面是各種型號的選擇,手機還是pad或者網頁版,還分為mac和windows,可以自行選擇,也可以自定義尺寸

點擊mockplus,可以看到有選項部分,可以進入這個選項進行整體上面的設計,比如UI的透明度,背景顏色等。通過設置讓自己設計更為順心

然後可以看到左邊會有兩個部分,一個是各種各樣的部件,一個編輯的地方。可以根據自己的需要把部件拉到自己需要的地方。

拉好部件之後,可以根據需要進行備注說明,可以點擊小閃電進行超鏈接,也可以進行尺寸上面的設置。

左邊是各種各樣的頁面,我們可以根據自己的需要進行頁面鏈接的設置。注意mockplus只允許頁面跳轉而不允許部件跳轉,好了之後,點擊上面的運行,一個APP線框圖就生成了

❽ 怎麼mockito方法的內部對象

怎麼mockito方法的內部對象?Mockito是一個針對Java的mocking框架。它與EasyMock和jMock很相似,但是通過在執行後校驗什麼已經被調用,它消除了對期望行為(expectations)的需要。其它的mocking庫需要你在執行前記錄期望行為(expectations),而這導致了醜陋的初始化代碼。下文為轉載,但原文有問題,錯誤的地方特地標紅了

Introction
Code in which new objects are created can be difficult to test. There are a number of patterns for doing this; two of them are discussed here. Both of these patterns may require rearranging your code a little, to make it more testable. Writing code that's easily testable is a good thing to be doing, regardless of which mocking framework you end up using.

Details
Pattern 1 involves factoring uses of new into one-line methods, then using a Mockito spy. This is the simpler of the two patterns. Pattern 2 involves factoring uses of new into a separate class and injecting it. It's a little more work, but it can be more powerful. The new calls that you want to factor out (using either pattern) are those where an object is created, that you are likely to want to mock. It is recommended that you use one or other of these patterns, whenever you find yourself writing new, on a class that's in your code base (as opposed to a JDK class or a class from a third party library).

❾ moickito 怎麼只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 {
@Test
public void shouldGetMockedHello() {
PowerMockito.mockStatic(AbstractAnimal.class);
PowerMockito.when(AbstractAnimal.getHello()).thenReturn(Hello mocked animal world!);
String greetings = AbstractAnimal.getHello();
Assert.assertTrue(greetings.equals(Hello mocked animal world!));
}
}

❿ 如何使用Mock來測試Files,Database和ContentProviders

Android是如何實現應用程序之間數據共享的?一個應用程序可以將自己的數據完全暴露出去,外界更本看不到,也不用看到這個應用程序暴露的數據是如何存儲的,或者是使用資料庫還是使用文件,還是通過網上獲得,這些一切都不重要,重要的是外界可以通過這一套標准及統一的介面和這個程序里的數據打交道,例如:添加(insert)、刪除(delete)、查詢(query)、修改(update),當然需要一定的許可權才可以。如何將應用程序的數據暴露出去?Android提供了ContentProvider,一個程序可以通過實現一個Contentprovider的抽象介面將自己的數據完全暴露出去,而且Contentproviders是以類似資料庫中表的方式將數據暴露。Contentproviders存儲和檢索數據,通過它可以讓所有的應用程序訪問到,這也是應用程序之間唯一共享數據的方法。要想使應用程序的數據公開化,可通過2種方法:創建一個屬於你自己的Contentprovider或者將你的數據添加到一個已經存在的Contentprovider中,前提是有相同數據類型並且有寫入Contentprovider的許可權。如何通過一套標准及統一的介面獲取其他應用程序暴露的數據?Android提供了ContentResolver,外界的程序可以通過ContentResolver介面訪問ContentProvider提供的數據。當前篇主要說明,如何獲取其它應用程序共享的數據,比如獲取Android手機電話薄中的信息。什麼是URI?在學習如何獲取ContentResolver前,有個名詞是必須了解的:URI。URI是網路資源的定義,在Android中賦予其更廣闊的含義,先看個例子,如下:將其分為A,B,C,D4個部分:A:標准前綴,用來說明一個ContentProvider控制這些數據,無法改變的;B:URI的標識,它定義了是哪個ContentProvider提供這些數據。對於第三方應用程序,為了保證URI標識的唯一性,它必須是一個完整的、小寫的類名。這個標識在元素的authorities屬性中說明:C:路徑,ContentProvider使用這些路徑來確定當前需要生什麼類型的數據,URI中可能不包括路徑,也可能包括多個;D:如果URI中包含,表示需要獲取的記錄的ID;如果沒有ID,就表示返回全部;由於URI通常比較長,而且有時候容易出錯,切難以理解。所以,在Android當中定義了一些輔助類,並且定義了一些常量來代替這些長字元串,例如:People.CONTENT_URIContentResolver介紹說明看完這些介紹,大家一定就明白了,ContentResolver是通過URI來查詢ContentProvider中提供的數據。除了URI以外,還必須知道需要獲取的數據段的名稱,以及此數據段的數據類型。如果你需要獲取一個特定的記錄,你就必須知道當前記錄的ID,也就是URI中D部分。前面也提到了Contentproviders是以類似資料庫中表的方式將數據暴露出去,那麼ContentResolver也將採用類似資料庫的操作來從Contentproviders中獲取數據。現在簡要介紹ContentResolver的主要介面,如下:返回值函數聲明finalUriinsert(Uriurl,ContentValuesvalues).finalintdelete(Uriurl,Stringwhere,String[]selectionArgs)Deletesrow(s)specifiedbyacontentURI.finalCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder)QuerythegivenURI,.finalintupdate(Uriuri,ContentValuesvalues,Stringwhere,String[]selectionArgs)Updaterow(s)inacontentURI.看到這里,是否感覺與資料庫的操作基本一樣的?就是這樣的,詳細解析請參考AndroidSQLite解析篇中的說明,不在此詳細說明。最後一個問題:如何獲取ContentResolver?調用getContentResolver(),例如:ContentResolvercr=getContentResolver();製作ContentResolver實例以上就完全介紹了如何獲取、使用ContentResolver,啟動Eclipes,製作一個完整的實例如下:打開showcontent.java,修改如下:packagemoandroid.showcontact;importandroid.app.ListActivity;importandroid.database.Cursor;importandroid.os.Bundle;importandroid.provider.Contacts.Phones;importandroid.widget.ListAdapter;importandroid.widget.SimpleCursorAdapter;{protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//ContentResolver通過URI來查詢ContentProvider中提供的數據Cursorc=getContentResolver().query(Phones.CONTENT_URI,null,null,null,null);startManagingCursor(c);ListAdapteradapter=newSimpleCursorAdapter(this,android.R.layout.simple_list_item_2,c,newString[]{Phones.NAME,Phones.NUMBER},newint[]{android.R.id.text1,android.R.id.text2});setListAdapter(adapter);}}然後在AndroidManifest.XML中元素前增加如下許可:最後運行程序,在模擬器啟動後,單擊Menu返回到Home界面,打開Contacts選擇Contacts標簽頁,添加2個聯系人信息。返回到Home,選擇moandroid.showcontact運行,剛添加的2個聯系人信息將顯示在界面上

閱讀全文

與mock怎麼修改方法里常量相關的資料

熱點內容
素麻花的製作方法視頻 瀏覽:564
旅遊失溫的解決方法 瀏覽:342
敲木架陶瓷瓦的安裝方法 瀏覽:313
2連續乘以十個2的簡便方法 瀏覽:904
葯物分析tlc雜質檢查方法 瀏覽:203
java類方法有什麼用 瀏覽:925
6聽筒在哪裡設置方法 瀏覽:964
柳樹種植方法 瀏覽:389
美雄諾龍的檢測方法 瀏覽:267
99乘78的簡便運算方法 瀏覽:966
用點電荷來代替帶電體的研究方法叫微元法 瀏覽:232
微博主頁皮膚在哪裡設置方法 瀏覽:404
本金罰息計算方法 瀏覽:490
治療肚子疼的最快方法 瀏覽:944
胯打開的方法和技巧 瀏覽:173
波菜種植方法和時間 瀏覽:243
憂鬱症如何治療方法 瀏覽:953
雙膠紙張厚度計算方法 瀏覽:439
國外手機截圖方法 瀏覽:701
現實suv側方停車最簡單的方法 瀏覽:762