Apexテストクラスで標準価格表IDをSOQLをつかって取得するとき、システム項目ではないので@isTest(SeeAllData=true)を宣言しないと取得することができません。そのため次のようにメソッドレベルで宣言して取得したりします。
SOQLクエリはこんな感じです。
ですがこんなことしなくてももっとキレイに実装する方法がありました。
Test.getStandardPricebookId()を使う方法です。
次のように宣言すると標準価格表のIDを取得できます。
Id pricebook2Id = Test.getStandardPricebookId();
これをつかって直したのがこちら。
変更後にテストクラスを実行するとエラーなくテストできました。
このメソッドはSummer'14の頃に追加されていました。不要なSeeAllDate=trueの宣言もなくなりキレイに実装できて便利です。
http://successjp.salesforce.com/features/pdf/Summer14_ReleaseNotes.pdf
参考
Test.getStandardPricebookId()を使う方法はQiitaで知りました。