こんにちは、管理人の@Salesforce.Zです。
sfdc のリリースでエラーになったから、
ここにきたでしょう
テストクラスでエラーになったかも
今回、リリースでタイトルのエラーになった場合の一つの解消方法を
共有します。
欲しけりゃくれてやる・・・。
探せ!
この世の全てをそこに置いてきた〜笑
目次
自分が困ったこと
リリースで、あるテストクラスだけSystem.LimitException: Too many SOQL queries: 101ってエラーになり
原因不明
理由:sandbox環境で、エラーになりませんでした。
調べた内容
- ループで、クエリ発行していない
- 無限に処理するところがなさそう
なぜなら、テスト環境で、正常処理するから
- うっすらに考えたのが主従関係による積み上げ集計かな?
子を登録することによって、親のトリガが動作してしまったかな
しかし、テスト環境では、問題ありませんよ、なぞなぞです。
対策
該当テストクラスのあるメソッドをコメントアウトして
カバー率は100%から99%になったけど
それがどんなメソッドかというと
親を登録して、
親に対して、子を登録するテストメソッド
そして、親が子に対して、積み上げ集計を使っている、もちろん、親にはトリガもある
これによって、制限に引っかかったではないかと思っていた、しかし、なぜかSandboxでエラーないのです。
そこで、試しで、該当メソッドをコメントアウトした
結果
リリース成功です。
コメントアウトしたメソッドのテストがどうする?
もちろん、ここで疑問に思うですね
その他のものを一回リリースして、成功してから、単独で問題のテストクラス
のコメントアウトしたメソッドを解除し、1本テストクラスのみリリースすることで解消しました。
リリースアドバイス
一発ですべてアセットをリリース対象を狙うのがいいですが
たまに、関連性によって、分割リリースで成功するパターンも考えたほうがいいではないかと思います。