私はswisstopoのdllを使ってLV03からLV95形式へ座標を移行しています。ユニットテストでswisstopo.dllを使用する
私はhereからdllをダウンロードしました。
最初にやりたいことは、移行の正確性を確認するための単体テストを書くことです。 私は2つのDLLのを参照してユニットテストを書いてきました。残念ながら
[TestFixture]
public class Lv03ToLv95ConverterTest
{
[Test]
[TestCase(600000, 200000, 2600000.0, 1200000.0)]
public void Convert_WhenGivenLv03In_ThenExpectedLv95Out(double givenLv03Easting, double givenLv03Northing, double expectedLv95Easting, double expectedLv95Northing)
{
var actualLv95 = Lv03ToLv95Converter.Convert(givenLv03Easting, givenLv03Northing);
actualLv95.Easting.ShouldBeEquivalentTo(expectedLv95Easting);
actualLv95.Northing.ShouldBeEquivalentTo(expectedLv95Northing);
}
}
public static class Lv03ToLv95Converter
{
public static Lv95 Convert(double easting, double northing)
{
var reframe = new Reframe();
var height = 0.0;
reframe.ComputeReframe(
ref easting,
ref northing,
ref height,
Reframe.PlanimetricFrame.LV03_Civil,
Reframe.PlanimetricFrame.LV95,
Reframe.AltimetricFrame.LN02,
Reframe.AltimetricFrame.LHN95);
return new Lv95(easting, northing);
}
}
public class Lv95
{
public Lv95(double easting, double northing)
{
this.Easting = easting;
this.Northing = northing;
}
public double Easting { get; private set; }
public double Northing { get; private set; }
}
、私はテストを実行したいとき、それは言う:
System.IO.FileLoadExceptionを:読み込めませんでした。指定されたファイル。 swisstopo.geodesy.htrans.CHtrans.ComputeHtrans(ダブル&高さ、ダブル東、ダブル北、でswisstopo.geodesy.htrans.CHtrans.ReadData(シングル[、] &データ、文字列のファイル名)
で
swisstopo.geodesy.reframe.Reframe.ComputeReframeでHeightTransformation変換)swisstopo.geodesy.reframe.Reframe.TransformAltimetryで
(ダブル&高さ、ダブル東、ダブル北、AltimetricFrame altFrameIn、AltimetricFrame altFrameOut)
(ダブル&東、ダブル&北、ダブル&高さ、PlanimetricFrame plaFrameIn、PlanimetricFrame plaFrameOut、AltimetricFrame altFrameIn、AltimetricFrame altFrameOut)CでMyProject.Tests.Lv03ToLv95Converter.Convertで
(ダブル東距、ダブル北距):\プロジェクト\ MyProjectと\ソース\ MyProject.Tests Lv03ToLv95ConverterTest.cs \ライン33
CでMyProject.Tests.Lv03ToLv95ConverterTest.Convert_WhenGivenLv03In_ThenExpectedLv95Out(ダブルgivenLv03Easting、ダブルgivenLv03Northing、ダブルexpectedLv95Easting、ダブルexpectedLv95Northing)において:プロジェクト\ \ MyProjectのソース\ \ MyProjectと.Tests \ Lv03ToLv95ConverterTest.cs:line 21
ここで何が問題なのか誰も知っていますか? 私は事前に...
感謝を参照して前にDLLを使用して問題を持っていたことがありません
編集:我々はリフレームはAssembly.ExecutingAssemblyを呼び出して、探している、問題があることができると思いswisstopo.dataなどは見つからないパスにあります。実行中のアセンブリがnunitランナーであるためです...
テスト内でアセンブリを手動で読み込もうとしましたが、残念ながらうまくいきませんでした。
[Test]
[TestCase(600000, 200000, 2600000.0, 1200000.0)]
public void Convert_WhenGivenLv03In_ThenExpectedLv95Out(double givenLv03Easting, double givenLv03Northing, double expectedLv95Easting, double expectedLv95Northing)
{
AppDomain.CurrentDomain.Load("swisstopo.data");
AppDomain.CurrentDomain.Load("swisstopo.reframelib");
var actualLv95 = Lv03ToLv95Converter.Convert(givenLv03Easting, givenLv03Northing);
actualLv95.Easting.ShouldBeEquivalentTo(expectedLv95Easting);
actualLv95.Northing.ShouldBeEquivalentTo(expectedLv95Northing);
}
これらの必要なアセンブリは、テストプロジェクトで参照していますか?これらのアセンブリに対して[ローカルにコピー]を設定してbinフォルダにコピーしましたか? –
はいテストプロジェクトのアセンブリを参照し、コピーローカルをtrueに設定しました。 – xeraphim
FileLoadExceptionの仕様(https://msdn.microsoft.com/en-us/library/system.io.fileloadexception(v=vs)。 110).aspx)は、管理されたアセンブリが見つかりましたが、ロードできなかった場合にスローされると言っています。また、どのファイルを読み込もうとしたのかを伝える必要があります。あなたは完全な例外のために投稿できますか? –