測試程式碼
[TestClass]
public class CodeRunTest
{
[TestMethod]
public void RunTest()
{
CodeRun target = new CodeRun();
string code = @"
using System;
public class Program {
public static void Main() {
for(int i=1;i<=3;i++) Console.Write(i);
}
}";
var expected = new List { "1", "2", "3" };
var actual = target.Run(code, "1");
Assert.IsTrue(expected.SequenceEqual(actual));
actual = target.Run(code, "2");
Assert.IsTrue(expected.SequenceEqual(actual));
}
[TestMethod]
public void Run35Test()
{
CodeRun target = new CodeRun();
string code = @"
using System; using System.Linq;
public class Program {
public static string Name { get; set; }
public static void Main() { Name = \"3\"; Console.Write(Name); }
}";
var actual = target.Run(code, "1", "System.Core.dll");
Assert.AreEqual("3", actual[0]);
}
}
驗證重點
- 動態編譯執行程式碼並捕獲
Console.WriteLine 輸出。
- 支援指定參考組件(如
System.Core.dll 以使用 LINQ)。
- 多次執行隔離(透過
id 區分 Consoler 儲存體)。