2016-06-23 15 views
6

Ben oluşturulan dosyalar yerleştirilebilir bir yolu belirleyen aşağıdaki kodu vardır:Test yardımcı fonksiyonlarını nereye koymalıyım?

fn gen_test_dir() -> tempdir::TempDir {           
    tempdir::TempDir::new_in(Path::new("/tmp"), "filesyncer-tests").unwrap() 
} 

Bu fonksiyon tests/lib.rs tanımlanır, bu dosyada testlerde kullanılan ve ayrıca birim testlerinde kullanmak istiyorum src/lib.rs'da bulunur.

Bu, yardımcı programların test dışı ikili kodda ve çoğaltma kodu olmadan derlenmesiyle mümkün müdür?

+0

testler/lib.rs'? –

+0

@DanielFath Bunu denedim ve sürüm-binary'yi derlemekten kaçınmak için "# [test]' ile açıkladım ve şu hatayı aldım: "test olarak kullanılan işlevler imzanın fn olması gerekir() ->()" – PureW

+0

Test dışı aşamalar sırasında kodunuzu kaldıracak #cfg (not (test)) 'dır. –

cevap

4

Ne #[cfg(test)] ile korunan bir altmodülün içine başka kamu hizmetleri ile benim birim testleri konur yapın: Eğer src/lib.rs` `içine Funcionality taşımak ve ardından` kullanmak Can not

#[cfg(test)] 
mod tests { // The contents could be a separate file if it helps organisation 
    // Not a test, but available to tests. 
    fn some_utility(s: String) -> u32 { 
     ... 
    } 

    #[test] 
    fn test_foo() { 
     assert_eq!(...); 
    } 
    // more tests 
} 
+0

Uyumluluk testleri ne durumda? Bir veritabanına entegre olmam gerekiyor, ancak sadece testler için bir bağımlılık yaratmak istemiyorum. Entegrasyon testleri, yardımcı fonksiyonların yeniden kullanılmasına gerek kalmadan problemim için iyi çalışıyor. Sanırım gidip bir test sandığı oluşturacağım ... – weberc2