2010-03-23 4 views
1

좋아 NUNIT 시험 설비의 외부에서 작동하지 않습니다. 세션 코드를 만들 내 것은 다음과 같습니다Fleunt 자 NHibernate는 <p></p>은 내가 RTM 유창함 자 NHibernate를 사용하여 데이터 레이어를 생성 ... 내 문제가 여기에,

[Test] 
    public void CanAddProduct() 
    { 
     var product = new Product {Code = "9", Name = "Test 9"}; 
     IProductRepository repository = new ProductRepository(); 

     repository.AddProduct(product); 

     using (ISession session = OrmHelper.OpenSession()) 
     { 
      var fromDb = session.Get<Product>(product.Id); 

      Assert.IsNotNull(fromDb); 
      Assert.AreNotSame(fromDb, product); 
      Assert.AreEqual(fromDb.Id, product.Id); 
     } 

내 테스트를 통과 : 내가 테스트 프로젝트에 모듈을 참조 할 때, 다음과 같은 형태 테스트 픽스처를 만들

_session = Fluently.Configure(). 
Database(SQLiteConfiguration.Standard.UsingFile("Data.s3db"))     
         .Mappings(m => 
         { 
         m.FluentMappings.AddFromAssemblyOf<ProductMap>(); 
         m.FluentMappings.AddFromAssemblyOf<ProductLogMap>(); 
         }) 
         .ExposeConfiguration(BuildSchema) 
         .BuildSessionFactory(); 

. 생성 된 SQLite DB를 열면 코드 9가있는 새 제품이 들어 있습니다. Product 및 ProductLog 테이블이 있습니다. 그것은 작동하지 않습니다

 Product product = new Product() {Code = "10", Name = "Hello"}; 
     IProductRepository repository = new ProductRepository(); 
     repository.AddProduct(product); 

     Console.WriteLine(product.Id); 

     Console.ReadLine(); 

: 이제

, 나는 새로운 콘솔 응용 프로그램을 작성하고 같은 라이브러리를 참조, 같은 것을 할. 나는 실제로 꽤 심한 예외 체인을 얻는다.

톱 레벨의 예외 : SessionFactory에를 만드는 동안

잘못되었거나 불완전한 구성을 사용하면 머리가 아파 많이 저장하려면, 여기에 요약 한 것입니다. . 자세한 내용에 대한 PotentialReasons 수집 및의 InnerException을 확인 \ 연구 \ n \ r에 \ n

PotentialReasons 수집은 비어

내부 예외 : 조립 시스템에서

에 IDbCommand 및 IDbConnection을 구현 .Data.SQLite를 찾을 수 없습니다. 어셈블리 System.Data.SQLite가 응용 프로그램 디렉터리 또는 전역 어셈블리 캐시에 있는지 확인하십시오. 어셈블리가 GAC에있는 경우 응용 프로그램 구성 파일의 요소를 사용하여 어셈블리의 전체 이름을 지정합니다.

단위 테스트 라이브러리와 콘솔 응용 프로그램은 System.Data.SQLite와 완전히 동일한 버전을 참조합니다. 두 프로젝트 모두 디버그 폴더에 정확히 같은 DLL이 있습니다. 나는 콘솔 앱의 디버그 디렉토리에 생성 된 유닛 테스트 라이브러리 인 SQLite DB를 복사 해 보았고 빌드 스키마 라인을 삭제 했는데도 여전히 실패했다.

누군가가 내 외부에서 작동하지 않는 이유를 알면 도움이된다. 단위 테스트는 크게 감사하겠습니다. 이 미친 벌레가 나를 서있다.

답변

2

64x OS를 사용하는 경우 컴파일러 빌드 옵션을 x86으로 설정해보십시오.

+0

나의 신 Berryl, 당신의 천재 ... 문서에서 내가 이것을 발견 할 수 있었던 어떤 생각? – thorkia

+0

no. 나는 너가 한 것처럼 거의 고통스럽게 그것을 알아 냈다. 무슨 끌기? – Berryl

+0

그래, 총 끌기 ... 누군가 문제가 뭔지 알아야한다고 생각하기 전에 몇 시간을 보냈다. – thorkia

관련 문제