cuốn sách gpt4 ai đã làm

Trình quản lý tài sản Android giả lập

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 22:25:30 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi có một đoạn mã chấp nhận Ngữ cảnh và chuyển ngữ cảnh này sang một phương thức riêng tư. Phương thức riêng tư gọi getAssets().open() để đọc tệp tồn tại trong thư mục Tài sản của ứng dụng của tôi.

phương thức void công khaiA(Context ctx) ném IOException{
// làm vài thứ ở đây...
Dữ liệu đối tượng[] = getFileContents(ctx);
// sử dụng dữ liệu[] được trả về ở đây...

}

đối tượng riêng tư[] getFileContents(Context ctx) ném IOException{
Dữ liệu đối tượng [];
BufferedInputStream là = new BufferedInputStream(context.getAssets().open("test.txt"));
// phân tích tệp và tạo mảng Đối tượng []
trả về dữ liệu[];
}

Tôi đang viết một bài kiểm tra đơn vị để kiểm tra phương thứcA() bằng Mockito để tôi có thể kiểm tra việc truyền dữ liệu rác hoặc đưa ra các ngoại lệ trong các trường hợp kiểm tra của mình.

Vấn đề là tôi không thể mô phỏng lớp AssetManager trong Android (đó là lớp Final).

Tôi đã thử sử dụng InstrumentationTestCase để chèn bối cảnh thực và bối cảnh thử nghiệm, nhưng cách này chỉ hiệu quả trong một số trường hợp. Làm cách nào để kiểm soát BufferedInputStream để tôi có thể cung cấp cho nó bất kỳ đầu vào nào tôi muốn (sử dụng mô hình hoặc các phương tiện khác)?

câu trả lời hay nhất

Tôi đã phải đối phó với cùng một vấn đề. Đây là cách tôi quản lý để truy cập các tệp cấu hình từ chương trình thử nghiệm đơn vị của mình mà không cần sử dụng các thử nghiệm Thiết bị. (Tôi đang sử dụng Android Studio 2.1).

Mã kiểm tra đơn vị:

lớp công khai ParameterTest {

Tham số tham số = null;

@Mock
Bối cảnh bối cảnh;
@Mock
Trình quản lý tài sản Trình quản lý tài sản;
@Mock
Luồng đầu vào luồng đầu vào;

@Trước
public void setUp() ném ngoại lệ {
MockitoAnnotations.initMocks(this);//tạo tất cả các đối tượng @Mock
doReturn(assetManager).when(context).getAssets();
//parametersandroid.xml nằm trong thư mục test/resources
//parametersandroid.xml không đề cập đến cấu hình tệp DTD.dtd
// lấy tên đường dẫn đầy đủ của file
Tài nguyên URL = ParametersTest.class.getClassLoader().getResource("parametersandroid.xml");
// được sử dụng MyClass
// bên trong phương thức tôi muốn kiểm tra có câu lệnh này:
// inputStream inputStream = this.assetManager.open(xmlFile);
inputStream inputStream=FileInputStream mới(resource.getPath());
doReturn(inputStream).when(assetManager).open(anyString());
// AssetManager assetsManager = context.getAssets();
// tham số = Tham số mới(assetManager, Resource.getPath());
tham số = Tham số mới (bối cảnh, Resource.getPath());

}
@Bài kiểm tra
public void testExtract() ném ngoại lệ {
khẳng địnhEquals(parameters.extract("//database/index[@name='TeamNameIdx']/create").replaceAll("[^az,AZ,;,.,?,']", ""),"createindexTeamNameIdxonTeamEntnameasc ;");
}
}

Mã để được kiểm tra:

Lớp công khai Tham số mở rộng fr.acnice.valade.eric.gemara.utilities.Parameters {
Trình quản lý tài sản riêng tư AssetManager = null;

Tham số công khai (Ngữ cảnh, Chuỗi xmlFile) {
siêu (xmlFile);
this.assetManager = context.getAssets();
}
@Ghi đè
Trích xuất chuỗi công khai (Yêu cầu chuỗi) ném XPathExpressionException,
Ngoại lệ {
inputStream inputStream = this.assetManager.open(super.xmlFile);
Kết quả chuỗi = (Chuỗi) xPath.evaluate(yêu cầu, Nguồn đầu vào mới (inputStream),
XPathConstants.STRING);
if (result.isEmpty()) {
ném ngoại lệ mới(
"Kết quả Xpath trống!!! kiểm tra tệp cấu hình");
}
return result;
}

}

Về android - chế nhạo Trình quản lý tài sản Android, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/32407178/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress