[AELF開発者コミュニティのタスク・アクティビティ] C#のタスク - TestKit AEDPoS延長#1915復興契約ポーリング試験を使用して

タスク名:テストケースTestKit AEDPoS拡張子#1915復興契約の投票を使用します

 

難易度:難しい要因が比較的大きい、テストエンジニアの日の割り当て

報酬: 1122 ELF(または同等の千元)

 

次のように、問題の詳細とチュートリアルを添付:

 ①発行紹介:https://github.com/AElfProject/AElf/issues/1915

②AElf問題の解決策-中国のコミュニティチュートリアル:https://github.com/AElfProject/AElf/issues/1846

 

あなたが興味を持っている場合は、問題の技術チームと直接通信することができます。あるいは、開発者コミュニティのQQグループに直接追加:グループ番号:102 857 654

 

ミッションステートメント:

このミッションは、改造テスト投票契約に興味のある人は/投票契約テストをリファクタリングする彼にDEVからの支援に署名する必要があるので、/投票-契約テストをリファクタリング枝に基づいています。(または、このブランチに合わせて独自の倉庫に新しいブランチを作成します。)

項目のテスト/ AElf.Contracts.AEDPoSExtension.Demo.Testsは、基本的なTestKit AEDPoS拡張機能を使用する方法を知っているか確認してください。試験DemoTest(以下に示す)はどのブロックチェーンシステムを示しています。その後、1つのブロックにそれらをパッケージいくつかのトランザクションを選択し、各ブロックは、新しい前のブロックに基づいています。XXStubを使用することで、送信/呼び出すことができるように、ユーザー固有のトランザクションは、同じ試験方法で特定の契約を呼び出します。また、あなたはXXStubは、トランザクションを生成するために使用することができます。

        【事実】
         公衆 非同期タスクDemoTest()
        { 
            // 初期化後のラウンド情報を確認してください。
            {
                 VARのラウンド=を待つ ConsensusStub.GetCurrentRoundInformation.CallAsync(新しい空の())。
                round.RoundNumber.ShouldBe(1 )。
                round.TermNumber.ShouldBe(1 )。
                round.RealTimeMinersInformation.Count.ShouldBe(AEDPoSExtensionConstants.InitialKeyPairCount)。
            } 

            // 我々は、この方法のプロセスのテストを使用することができます。
            //基本的にこれは、トランザクションなしで一つのブロックが生成されます。
            待つBlockMiningService.MineBlockAsyncを(); 
            
            // これはひとつのトランザクションで1つのブロックが生成されます。
            // このトランザクションは、トークン契約のメソッドを作成して呼び出します。
            待つ BlockMiningService.MineBlockAsync(新しいリスト<トランザクション> 
            { 
                TokenStub.Create.GetTransaction(新しいCreateInput 
                { 
                    記号 = " ELF " 
                    小数 = 8 
                    TOKENNAME =を" テスト" 
                    発行 = Address.FromPublicKey(SampleECKeyPairs.KeyPairs [ 0 ] .PublicKey)、
                    IsBurnable = 
                    TotalSupply = 1_000_000_000_00000000 
                })
            })。
            
            // 前回正常に実行されたトランザクションを作成するかどうかを確認してください。
            {
                 VAR = tokenInfoを待つ TokenStub.GetTokenInfo.CallAsync(新しい GetTokenInfoInput {記号= " ELFは" })。 
                tokenInfo.Symbol.ShouldBeは(" ELF " ); 
            } 

            // 次のステップAEDPoSプロセスが正しいかどうかをチェックします。
            // これで2鉱山労働者は、最初のラウンド中のブロックを生成するので、2人の鉱夫OutValueがnullではないがあるはずです。
            {
                 VARのラウンド=を待つ ConsensusStub.GetCurrentRoundInformation.CallAsync(新しい空の())。
                round.RealTimeMinersInformation.Values.Count(M!=> m.OutValue = ヌル).ShouldBe(2 )。
            } 

            待つ BlockMiningService.MineBlockAsync(新しいリストを<トランザクション> ());
 
            { 
                VARのラウンド=は待つ(ConsensusStub.GetCurrentRoundInformation.CallAsyncを新しい空の()); 
                round.RealTimeMinersInformation.Values.Count(M!=> m.OutValue = ヌル).ShouldBe(3 ); 
            } 

            // 現在5人の鉱夫を持っており、この行の前に、3つの鉱山労働者は、既にブロックを生成します。
            // 3つの以上のブロックは、現在のラウンドを終了します。
            ためVAR i = 0 ; iは< 3 ; iが++ 
            { 
                待つ(BlockMiningService.MineBlockAsyncを新しいリスト<トランザクション> ()); 
            } 

            // ラウンド数を確認してください。
            {
                 VARのラウンド=を待つ ConsensusStub.GetCurrentRoundInformation.CallAsync(新しい空の())。
                round.RoundNumber.ShouldBe(2 )。
            } 
            
            // 6以上のブロックは、第二ラウンドを終了します。
            VAR I = 0 ;私は< 6を、私は++ 
            { 
                待つ BlockMiningService.MineBlockAsync(新しいリスト<トランザクション> ()); 
            }
            
             //ラウンド数を確認してください。
            {
                 VARのラウンド=を待つ ConsensusStub.GetCurrentRoundInformation.CallAsync(新しい空の())。
                round.RoundNumber.ShouldBe(3 )。
            } 
        }

 

これを知って、あなたがに行くことができます test/AElf.Contracts.Vote.AEDPoSExtension.Tests 契約票のテストケースを再構築してみてください。テストロジックの場合は、ロジックは、単純に現在のテストケースをコピーすることができます AElf.Contracts.Vote.Tests

加えて、他のシステムは、(その中に配置された歓迎再契約していますcontract/)。READMEで  test/AElf.Contracts.AEDPoSExtension.Demo.Testsテストプロジェクトを作成する方法について説明します。

おすすめ

転載: www.cnblogs.com/aelf/p/11233771.html