顯示具有 OzCode 標籤的文章。 顯示所有文章
顯示具有 OzCode 標籤的文章。 顯示所有文章

Coding技巧:快速產生C#含測試資料的類別

Coding技巧:快速產生C#含測試資料的類別

在補測試程式的過程,有時需要提供假資料給測試程式以驗證正確性。因為是的過程,在資料庫中已經有測試資料,所有我想借由這些測試資料快速產出一個假的含資料的類別。但有些類別中的欄位非常多,而且很多又有階層關係,一字一字輸入轉回 C# 的資料類別又慢又沒效率

OzCode - 最強大的 Visual Studio 偵錯套件

OzCode - 最強大的 Visual Studio 偵錯套件

我們都知道Visual Studio是地表最強的開發工具,其中與開發人員最相關的二個功能是開發時的IntelliSense與除錯用的IntelliTrace,IntelliTrace雖然強大好用,但是要Ultimate版才有完善支援,當然,那是一筆不小的費用。那麼除了升級為Ultimate版本外,是否還有其他好的選擇?是的,OzCode就是一套筆者要介紹給各位的Visual Studio Debug擴充程式。

OzCode

好的除錯工具帶你上天堂。OzCode是一套可以解決除錯上煩腦的強大套件。

OzCode正在舉辦一個除錯測試,參加者有機會贏得一套OzCode授權,以下範例以除錯測試中的範例來示範,讓各位讀者看看使用OzCode的前後差異。

OzCode Challenge

第一題

void Main()
{
 bool flag = true;
 StringBuilder sb = new StringBuilder();
 sb.Append("foo " + flag == false + " Bar");
 Console.WriteLine (sb.ToString());
}   
  
OzCode 第一題

LINQPad執行結果是false,但是why?

我們看看在Visual Studio下使用IntelliTrace的結果:

IntelliTrace-1
IntelliTrace-2

雖然對於變數內容的變化,我們可以很容易的透過區域變數視窗來觀察,但對於運算式的運算過程IntelliTrace就比較幫不上忙。我們還是只知道結果是false,但為何是false還是有看沒有懂。

第二題

void Main()
{
 var riddle = new Riddle();
 ((Counter)riddle.counter).Increment();
 Console.WriteLine (((Counter)riddle.counter).Count);
}

// Define other methods and classes here
struct Counter
{
 private int x;
 public void Increment() { this.x++; }
 public int Count { get { return this.x; } }
}

class Riddle
{
 public readonly object counter = new Counter();
}   
  
OzCode 第二題
IntelliTrace-3

執行結果為0,但為什麼為是0呢?

第三題

void Main()
{
 bool boolean1 = true;
 bool boolean2 = true;
 bool boolean3 = false;
 
 if (boolean1 = boolean2 && boolean3)
  Console.WriteLine ("true");
 else
  Console.WriteLine ("false");
}   
  
OzCode 第三題

執行結果為false