

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Device Farm 中將額外檔案新增至您的測試套件
<a name="custom-test-environments-extending-files"></a>

您可能想要使用其他檔案做為測試的一部分，無論是額外的組態檔案或其他測試資料。您可以將這些額外的檔案新增至測試套件，然後再上傳至 AWS Device Farm，然後從自訂環境模式存取這些檔案。基本上，所有測試套件上傳格式 (ZIP、IPA、APK、JAR 等） 都是支援標準 ZIP 操作的套件封存格式。

您可以使用 AWS Device Farm 下列命令，在將檔案上傳至 之前，將檔案新增至您的測試封存：

```
$ zip zip-with-dependencies.zip extra_file
```

對於額外檔案的目錄：

```
$ zip -r zip-with-dependencies.zip extra_files/
```

這些命令適用於所有測試套件上傳格式，但 IPA 檔案除外。對於 IPA 檔案，特別是與 XCUITests 搭配使用時，我們建議您將任何額外的檔案放在稍微不同的位置，因為 會 AWS Device Farm 重新簽署 iOS 測試套件。建置 iOS 測試時，測試應用程式目錄將位於另一個名為{{承載}}的目錄中。

例如，以下是這類 iOS 測試目錄的外觀：

```
$ tree
.
└── Payload
    └── ADFiOSReferenceAppUITests-Runner.app
        ├── ADFiOSReferenceAppUITests-Runner
        ├── Frameworks
        │   ├── XCTAutomationSupport.framework
        │   │   ├── Info.plist
        │   │   ├── XCTAutomationSupport
        │   │   ├── _CodeSignature
        │   │   │   └── CodeResources
        │   │   └── version.plist
        │   └── XCTest.framework
        │       ├── Info.plist
        │       ├── XCTest
        │       ├── _CodeSignature
        │       │   └── CodeResources
        │       ├── en.lproj
        │       │   └── InfoPlist.strings
        │       └── version.plist
        ├── Info.plist
        ├── PkgInfo
        ├── PlugIns
        │   ├── ADFiOSReferenceAppUITests.xctest
        │   │   ├── ADFiOSReferenceAppUITests
        │   │   ├── Info.plist
        │   │   └── _CodeSignature
        │   │       └── CodeResources
        │   └── ADFiOSReferenceAppUITests.xctest.dSYM
        │       └── Contents
        │           ├── Info.plist
        │           └── Resources
        │               └── DWARF
        │                   └── ADFiOSReferenceAppUITests
        ├── _CodeSignature
        │   └── CodeResources
        └── embedded.mobileprovision
```

對於這些 XCUITest 套件，請將任何額外的檔案新增至{{承載}}目錄內以 .{{app}} 結尾的目錄。例如，下列命令示範如何將檔案新增至此測試套件：

```
$ mv extra_file Payload/*.app/
$ zip -r my_xcui_tests.ipa Payload/
```

當您將檔案新增至測試套件時，您可以 AWS Device Farm 根據檔案的上傳格式，預期 中的互動行為會略有不同。如果上傳使用 ZIP 副檔名， AWS Device Farm 會在測試之前自動解壓縮上傳，並將解壓縮的檔案保留在具有 {{$DEVICEFARM\_TEST\_PACKAGE\_PATH}} 環境變數的位置。（這表示如果您將名為 {{extra\_file}} 的檔案新增至封存的根目錄，如第一個範例所示，它將在測試期間位於 {{$DEVICEFARM\_TEST\_PACKAGE\_PATH/extra\_file}})。

若要使用更實用的範例，如果您是 Appium TestNG 使用者，想要在測試中包含 {{testng.xml}} 檔案，您可以使用下列命令將其包含在封存中：

```
$ zip zip-with-dependencies.zip testng.xml
```

然後，您可以在自訂環境模式中將測試命令變更為下列項目：

```
java -D appium.screenshots.dir=$DEVICEFARM_SCREENSHOT_PATH org.testng.TestNG -testjar *-tests.jar -d $DEVICEFARM_LOG_DIR/test-output $DEVICEFARM_TEST_PACKAGE_PATH/testng.xml
```

如果您的測試套件上傳副檔名不是 ZIP （例如 APK、IPA 或 JAR 檔案），則可在 {{$DEVICEFARM\_TEST\_PACKAGE\_PATH}} 找到上傳的套件檔案本身。由於這些檔案仍然是封存格式檔案，因此您可以解壓縮檔案，以便從內部存取其他檔案。例如，下列命令會將測試套件的內容 （適用於 APK、IPA 或 JAR 檔案） 解壓縮至 {{/tmp}} 目錄：

```
unzip $DEVICEFARM_TEST_PACKAGE_PATH -d /tmp
```

如果是 APK 或 JAR 檔案，您會發現額外的檔案解壓縮到 {{/tmp}} 目錄 （例如 {{/tmp/extra\_file}})。對於 IPA 檔案，如前所述，額外的檔案會位於 {{.app}} 結尾資料夾內的略有不同位置，該資料夾位於{{承載}}目錄內。例如，根據上述 IPA 範例，檔案會位於位置 {{/tmp/Payload/ADFiOSReferenceAppUITests-Runner.app/extra\_file}} （參考為 {{/tmp/Payload/\*.app/extra\_file)。}}

如需擴展測試套件和最佳化測試的更多方法，請參閱 [在 Device Farm 中擴展自訂測試環境](custom-test-environments-extending.md)。