0

Pex を使用して単体テストを構築しています。私の問題は、すべてのコード ブランチがテストされているわけではないことです。Pex は、同じ条件に失敗するパラメーター値を生成し続け、その条件の後のすべてのコードが実行されないようにします。

私の方法は次のようになります:

    public void SetUp(DbSyncScopeDescription SyncScopeDesc, BasicInfo info, string dbContext = "MyDBContext")
    {
        // <pex>
       Contracts validation
        // </pex>

        string localDbConnStr = string.Empty;

        //this condition never get a parameter that results in true
        if (IsContextExist(dbContext))
        {
            localDbConnStr = ConfigurationManager.ConnectionStrings[dbContext + "Context"].ConnectionString;
        }
        else
        {
            throw new MissingFieldException("dbcontext does not exist");
        }

        // This part is never being reached
        ProvisionLocalScope(SyncScopeDesc, info.FarmId, localDbConnStr);

        info.Tables = GetSyncTablesAsSyncTableInfo(SyncScopeDesc);
        AdminOrm.Create(info.ToORM(), String.Format("name={0}AdminEntities", dbContext));
    }

すべてのコードに到達できるように、そのテストに合格するように Pex に指示することは可能かどうか疑問に思います。これが不可能な場合は、Pex にテストの 1 つの関数パラメーターの既定値を使用させることができます (存在しない場合、これは良い機能になると思います)。

ありがとうございました

4

0 に答える 0