0

データ ドリブン ユニット テストで奇妙な問題が発生しています。データはファイルに保存されxlsます。次の接続文字列を使用すると、すべて正常に動作します。

    [TestMethod()]
    [DataSource(
        "System.Data.Odbc",
        @"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;dbq=MyFolder\TestData.xls;defaultdir=.",
        "Tabelle1$",
       DataAccessMethod.Sequential)]
    public void DataDrivenTest() {...}

私が今やりたいことは、接続文字列からファイル名を抽出して、定数に変換することです。

    const string FilePath = "MyFolder\TestData.xls";

しかし、接続文字列の分割を開始するとすぐに、単体テストでエラーが発生します。興味深いことに、文字列を 2 つの部分に分割しても機能しません。

        ...
        @"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;" + @"dbq=MyFolder\TestData.xls;defaultdir=.",
        ...

代わりに、次のエラー メッセージが表示されます。

単体テスト アダプターは、データ ソースへの接続またはデータの読み取りに失敗しました。このエラーのトラブルシューティングの詳細については、MSDN ライブラリの「データ ドリブン ユニット テストのトラブルシューティング」(http://go.microsoft.com/fwlink/?LinkId=62412) を参照してください。

エラーの詳細: エラー [42S02] [Microsoft][ODBC Excel Driver] Microsoft Jet データベース エンジンは、オブジェクト 'Tabelle1$' を見つけることができませんでした。オブジェクトが存在すること、およびその名前とパス名のつづりが正しいことを確認してください。

この動作の違いはどこから来るのでしょうか?

私にとって最も紛らわしいのはildasm、2 つのバリアント間に明らかな違いが見られなかったことです (つまり、コンパイラは既に 2 つの文字列を連結しているように見えます)。

4

1 に答える 1

0

問題はおそらく @ を使用した文字列の追加にあります。試してみてください:

"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;" + "dbq=MyFolder\\TestData.xls;defaultdir=."
于 2012-05-22T11:32:05.087 に答える