2

ASP.NETアプリケーション用の手っ取り早い単体テストフレームワークがあります。ASPXページには、期待される結果と実際の結果を比較してテーブルを作成するメソッドがあります。必要に応じてコンパイルされ、VS.NETを実行していなくても、一連のテストをすばやく作成して実行できます。

呼び出し例は次のとおりです。

PrintResult(
   expected:  "$A$1", 
   actual:    RST.ExcelReference.FormatReferences("{{REF:1:0:1:0}}", false, 0, 0),
   arguments: "RST.ExcelReference.FormatReferences(\"{{REF:1:0:1:0}}\", false, 0, 0)");

(わかりやすくするために、名前付きの引数が追加されています。)

ご想像のとおり、実際の通話とその通話の表示を同期させるのは面倒です。

の引数値を調べることはできずEnvironment.StackTrace、メソッド定義と行番号だけを調べることができます。しかし、私の場合、実際の引数値は必要ありません。私は通常、引数としてリテラルを使用してこのメ​​ソッドを呼び出しているので、必要なのは、スタックトレースのPrintResult()へのエントリポイントのソースコードの行だけです。

未処理の例外がある場合に表示されるように、ソースコードはASP.NETで何らかの形で利用できるようです。どうすればアクセスできますか?

4

1 に答える 1

2

Environment.StackTraceスタック トレースの各行にファイル名と行番号が表示されます。明確にフォーマットされており、簡単に解析できるはずです。ドキュメントから:

StackTrace プロパティは、各メソッド呼び出しのスタック トレース情報を次のようにフォーマットします。

"で FullClassName. MethodName (MethodParams) in FileName :line LineNumber "

リテラル "at" の前には 3 つのスペースがあり、リテラル "in" と ":line" は、デバッグ シンボルが使用できない場合は省略されます。プレースホルダー、FullClassName、MethodName、MethodParms、FileName、および LineNumber は、次のように定義された実際の値に置き換えられます。

FullClassName 名前空間を含む、クラスの完全な名前。

MethodName メソッドの名前。

MethodParms パラメータの型と名前のペアのリスト。各ペアはコンマ (",") で区切られます。MethodName がパラメーターを 1 つもとらない場合、この情報は省略されます。

FileName MethodName メソッドが宣言されているソース ファイルの名前。デバッグ シンボルが使用できない場合、この情報は省略されます。

LineNumber コール スタックにある命令の MethodName からのソース コードを含む FileName の行番号。デバッグ シンボルが使用できない場合、この情報は省略されます。

あなたがほのめかした質問でEnvironment.StackTraceは、それはあなたの質問に対する答えではありませんが、ソースファイル名と行番号を解析して、ファイルからその行を読み取ることができるはずです。私は何が欠けていますか?

于 2012-08-03T15:59:33.507 に答える