2016-12-22 42 views
6

LocalDatastoreServiceTestConfig'u, bileşik bir indeks gerekiyorsa (ör., Birden çok özellikte bir sıralama içeren bir sorgu) sorguların başarısız olacağı şekilde yapılandırmak istiyorum. Bunu yapmanın bir yolu var mı?Bir bileşik indeksine ihtiyaç duyulursa Java Google App Engine SDK'sı için test yapmanın bir yolu var mı?

new LocalDatastoreServiceTestConfig().setNoIndexAutoGen(true)'u denedim ancak hiçbir etkisi olmadı.

(bir corresponding way to do this with the Python SDK yoktur.)

Ben tarafından varsayalım

cevap

1

"başarısız" Eğer ya da benzer bir şey "bir istisna" anlamına gelir. Eğer öyleyse, WEB-INF/datastore-indexes.xmlautoGenerate özniteliğini false olarak ayarlamanız gerekir.

Örnek WEB-INF/datastore-indexes.xml: Bir bileşik endeksi bir istisna gerektiren bir sorgu yapacak false autoGenerate Ayar

<datastore-indexes autoGenerate="false"> 
</datastore-indexes> 

. örnek kod:

SEVERE: com.google.appengine.api.datastore.DatastoreNeedIndexException: Query com.google.appengine.api.datastore.dev.LocalCompositeIndexManager$IndexComponentsO 
[email protected] requires a composite index that is not defined. You must update C:\appengine-java-sdk\dev\core1\war\WEB-INF\datastore-indexes.xml or enable au 
toGenerate to have it automatically added. 
The suggested index for this query is: 
    <datastore-index kind="Action" ancestor="false" source="manual"> 
     <property name="encrypter" direction="asc"/> 
     <property name="requester" direction="asc"/> 
     <property name="time" direction="desc"/> 
    </datastore-index> 

fazla bilgi için, datastore-indexes.xml reference bkz:

try { 
    Query q = new Query("Action") 
      .addSort("encrypter", Query.SortDirection.ASCENDING) 
      .addSort("requester", Query.SortDirection.ASCENDING) 
      .addSort("time", Query.SortDirection.DESCENDING); 

    //...snip... 

} catch (Exception e) { 
    log.severe(e.toString()); 
} 

Ben beklendiği gibi açmış bir istisna bu test edilmiş ve aldık.

+0

Bu başarısızlığa bir birim testinde neden olan bir örnek var mı? Bu ayarı kullanıyorum ve dev sunucusunun altında çalışırken sorguların başarısız olmasına neden oluyor, ancak aynı sorguyu yürüten sınamalar başarısız oluyor. Belki de dosyayı okumak için testler için yapılandırmam gereken başka bir şey var. –

+0

Yeniden üretim amacıyla, testinizi nasıl yazdığınıza dair en az bir çalışma örneği sunabilir misiniz? Alternatif olarak, sorgularınızı aşağıdaki gibi tanımlanan XmlDocument nesnelerine karşı çalıştırmayı denemek isteyebilirsiniz: 'XmlDocument doc = new XmlDocument(); doc.Load (xmlFilePath); ' – Alex