我一直在開發風暴拓撲,但是我仍然發現我缺乏一種正確的單元測試方式,可以在不需要啓動拓撲併發送自己流量的情況下創建螺栓和噴口。 拓撲結構中使用的服務是分開的,並進行了單元測試,但它們的使用情況或拓撲結構(元組不正確等)仍然存在錯誤。 爲了解決這個問題,在我的項目中創建單元測試的方法是什麼? 謝謝。如何做風暴拓撲的單元測試?
3
A
回答
0
創建螺栓的單元測試有點複雜,但可能不需要部署拓撲結構。 您可以創建一個測試類來實現IOutputCollector 和另一個實現Tuple的測試類。 你應該實現你使用的方法,並可能存儲發射的元組。
之後,您可以使用以下代碼創建螺栓的單元測試。
MockOutputCollector c = new MockOutputCollector();
Bolt b = new Bolt();
b.prepare(c,null,null);
MockTuple tuple = new MockTuple(fields,Arrays.aslist({"a,b,c"}));
b.execute(tuple);
List result = c.getEmittedTuples().get(0);
0
我不知道你的是做加工的複雜性,但用於測試螺栓一個簡單的方法是創建一個又一個的螺栓那些斷言(使用自己喜歡的測試框架)上的元組內容執行方法。
class AssertOutput extends BaseOperation implements Function {
private AssertOutput() {
}
@Override
public void execute(final TridentTuple tuple, final TridentCollector collector) {
final List<Object> values = new ArrayList<>();
for (final Object obj : tuple.getValues()) {
values.add(obj);
}
}
}
所以在單元測試中,您可以通過AssertOutput螺栓調用每個方法來輕鬆檢查螺栓的輸出。
這是我知道自動檢查元組內容的唯一方法。
相關問題
- 1. 風暴拓撲如何處理元組?
- 2. 風暴拓撲不提交
- 3. 風暴拓撲:多對一
- 4. 風暴 - 拓撲結構到拓撲結構
- 5. Apache風暴 - 帶風暴集羣的地圖拓撲
- 6. 瞭解風暴拓撲可視化
- 7. 風暴拓撲生成異常
- 8. 風暴拓撲部署使用maven
- 9. 無法提交風暴拓撲
- 10. 在風暴中設計拓撲?
- 11. 風暴部署時JAR拓撲
- 12. 無法使用kafka風暴將拓撲提交給apache風暴
- 13. 單風暴服務器上可以部署多少風暴拓撲?
- 14. 如何讓我的風暴拓撲實時工作?
- 15. 在一個簡單的聚集風暴拓撲分組
- 16. 如何重新平衡風暴三叉戟拓撲
- 17. 如何在同一實例上運行多個風暴拓撲?
- 18. 如何在風暴拓撲結構中使用drools
- 19. 風暴拓撲與服務器中的HBase之間的連接
- 20. 在風暴正在運行的拓撲中添加螺栓
- 21. 部署與Spark依賴關係的風暴拓撲
- 22. 螺栓接收風暴拓撲的重複結果
- 23. 屬性文件來配置hortonworks上的風暴拓撲和kafka
- 24. 三叉戟拓撲(風暴)中的並行配置
- 25. 幾個風暴拓撲之間的通信
- 26. 監視風暴的拓撲結構,特別是使用JMX
- 27. 在Storm中運行Trident拓撲TrackedTopology單元測試
- 28. 的NoSuchMethodError:DefaultKryoFactory - 試圖運行一個風暴啓動項目的拓撲結構
- 29. apache風暴拓撲ID從n跳到n + 2
- 30. 在風暴拓撲結構上Jedis「無法獲得池資源」
聽起來對我來說更像是你不是在談論單元測試,而是關於下一步 - 集成測試。 – Gimby
嗯,我做了添加集成測試,它幫助了很多:)但它很慢,對我來說像檢查我的topo是否正確和每個污點發送/處理一個正確的元組可以單元測試的基礎知識,但我不知道什麼是最好的辦法。可能與Mockito,但我希望有更好的東西。 – Orpheo