TMTOWTDI,我當然希望如此 - 當我遇到多維哈希(有時4-5層深)時,我一直在使用Test :: Deep作爲最後幾個項目。現在我通常的做法是輸入這些散列並填入我的預期數據,然後運行cmp_deeply(actual, expected, msg)
。有沒有人有這樣的單元測試深層嵌套數據的任何建議? - 我目前的方法看起來非常低效,有時每個數據結構的單元測試需要一個小時以上。Perl單元測試深層結構
2
A
回答
2
爲此,我通常可以用is_deeply
從Test::More。我還用Test::Differences進行了一些項目 - 它在非平等方面似乎有更好的產出。
4
我使用Test::More和is_deeply
就像下一個評論者。我也有一些自動化的比較,有一個t/sample /目錄,通過手動運行測試並在適當的地方使用Data::Dumper來存儲期望值。 (哦,我最好已經用YAML - TMTOWTDI!)
也就是說,你運行一次dump-generator,查看dump結構,提交它們,然後只依靠is_deeply
,直到測試中斷,這意味着錯誤或預期的結構更改。
0
也許OP意味着時間是通過手動輸入期望值而不是運行時間來消耗的。如果您具有已知的良好結構,則可以使用Data :: Dumper或Data :: Dump生成編程文本,然後將其結合到您的測試中。
1
如果您只是想測試結構,請嘗試Data::Validate::Struct。
您需要定義一個參考數據結構,以便與可以是任何級別的實際數據結構進行比較,可以是任何嵌套散列/數組的組合。
這裏最重要的是要注意,這個模塊驗證數據類型,而不是實際的數據。
例:
my $exp = {
'body' => {
'results' => [
{
'template' => [
{
'origin' => 'word',
'name' => 'word',
'id' => 'int',
'attributes' => [
{
'value' => 'number',
'key' => 'word'
},
{
'value' => 'text' ,
'key' => 'word'
}
],
'hostname' => 'hostname',
}
]
}
]
}
};
然後
my $v = new_ok('Data::Validate::Struct', [ $exp ]);
ok($v->validate($act), 'validate an exp against an act' . $v->errstr());
將驗證的$act
對$exp
嘗試結構,對模塊一看Tests,我發現它非常有用。
相關問題
- 1. 如何單元測試結構構造
- 2. 單元測試不同的類層次結構
- 3. WP7 3層體系結構單元測試
- 4. 從調用層次結構隱藏單元測試
- 5. N層體系結構和單元測試(使用Java)
- 6. n層體系結構的單元測試
- 7. 提取深層XML結構
- 8. Perl單元測試嘲諷
- 9. 單元測試DAO層呢?
- 10. Rails耙測試:單元故障 - 更深層的東西?
- 11. 配置測試深模塊結構
- 12. pycharm和單元測試 - 結構工程
- 13. 單元測試目錄結構
- 14. 單元測試「結構」的方法?
- 15. 單元測試。文件結構
- 16. 單元測試使用後臺進程深嵌在代碼結構中:Elixir
- 17. NUnit測試夾具層次結構
- 18. 單元測試測試OK結果
- 19. 單元測試,重構,IO
- 20. 重構單元測試
- 21. 重構單元測試(Jasmine)
- 22. 單元測試構建
- 23. 爲返回對象層次結構的函數編寫單元測試
- 24. 在Python中進行單元測試的適當文件層次結構
- 25. 在域類層次結構中使用namedQuery的Grails 2.0單元測試問題
- 26. 團結PerRequestLifetimeManager單元測試
- 27. prometheus單元測試總結
- 28. 單元測試JSON結果
- 29. Visual Studio 2012測試類別層次結構(測試瀏覽器)
- 30. Laravel 5.3使用php單元測試構建單元測試
這些數據結構究竟有多大?無論您處理的數據量是多少,一個小時都是大量的運行時間。 – Ether 2011-02-08 17:37:27
@其他 - 是否因爲比較例程未完全優化?我一直不得不推出自己的產品(由於比較容差和自定義比較方法等一些奇特的需求),並且不知道庫存產品有多好。但我知道我能夠比原始版本大幅優化我的作品。 – DVK 2011-02-08 21:25:50