Warning: Illegal string offset 'ssb_og_tags' in /var/www/www.xgeek.net/html/wp-content/plugins/simple-social-buttons/simple-social-buttons.php on line 1466

RunTest with Salesforce Tooling REST API (同期と非同期)

SalesforceはTooling REST APIを通じてテスト実行することをサポートしています、runTestsAsynchronous(非同期)とrunTestsSynchronous(同期)二つ方式があります。
参照: https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/intro_rest_overview.htm

本ポストでは、runTestsAsynchronous (非同期)and runTestsSynchronous(同期)の違いを説明します。

準備

1.Salesforceアカウント
2.apigee for Salesforce (https://apigee.com/console/salesforce)
3.一つTestClass (Id=01p10000001Faws) 例:

1.runTestsAsynchronous

非同期テスト実行は各テストメソッドを並行実行することができ、実行時間は短縮することができます。
(実際には、この方式でテストタスクが多い場合はかなり遅くて,10分以上超える場合もあります(汗.. )

まず、Salesforce OAuth2でapigeeを認証する必要があります。
apigee apigee-auth2 REST API バージョンV28.0以降はTooling APIをサポート初めますので、エンドポイントを [https://na14.salesforce.com/services/data/v24.0/] から [https://na14.salesforce.com/services/data/v33.0//tooling/]に変更します。
「Request URL」と「Parameter」を下記のイメージの通り設定してから送信します。 apigee-runTestsAsynchronous

レスポンス

レスポンス結果の通り、一つオブジェクトIdのようなものが返してきました、実はAsyncApexJobのIdです。
それで「Apex テスト実行」には新規テストが実行されたことが確認できます。 Apex Test Execution これで、詳細テスト結果はどうやって取得しますでしょうか?
Tooling API を使用して関連オブジェクトから詳細テスト結果のクエリは可能です。
次は関連オブジェクのER図です、クエリして見ましょう。 ER

1.ApexTestQueueItem [Document]

apigee-ApexTestQueueItem

レスポンス

2.ApexTestResult [Document]

レスポンス

3.ApexCodeCoverage [Document]

レスポンス

2.runTestsSynchronous

API名の通り、runTestsSynchronousは同期でテスト実行し、実行結果を直接返すことができます。
「Request URL」と「Parameter」を下記のイメージの通り設定してから送信します。 apigee-runTestsSynchronous

レスポンス

この方式だと、「Apex テスト実行」にはテスト実行が新規されないです。 Apex Test Execution-runTestsSynchronous これはSublime Text3 + MavensMateでテスト実行はいつもSalesforce開発者コンソールから実行よりはるかに速いの原因ではないかと思います。