InMemory 2.0-preview1
과 함께 Entity Framework Core 2.0-preview1
을 사용하고 있습니다. 각 단위 테스트 클래스는 부모가 사용할 수있는 새로운 메모리 데이터베이스를 만드는 일회용 클래스를 상속합니다.UseInMemoryDatabase 컨텍스트가 단위 테스트에서 공유되지 않습니다.
public Constructor()
{
var services = new ServiceCollection();
services.AddEntityFrameworkInMemoryDatabase()
.AddDbContext<DBContext>(o => o.UseInMemoryDatabase("Test"));
var serviceProvider = services.BuildServiceProvider();
Context = serviceProvider.GetRequiredService<DBContext>();
}
이름이 여러 시험에서 공유함으로써 각 테스트 내 빌드 서버에 대한 용납 할 몇 초를 지속 각 단위 테스트의 결과로 새로운 컨텍스트를 생성 할 수 없다는 것입니다 데이터베이스를주는 문제. 2.0에서 변경된 이유 또는이 문제를 해결하는 방법에 대한 많은 문서를 찾을 수 없습니다. 새로운 .UseTransientInMemoryDatabase
을 사용해 보았지만 아무 것도 변경되지 않는 것으로 보입니다. 미리 감사드립니다.
단위 테스트에서 동일한 db 컨텍스트를 공유하는 경우 각 테스트에 대해 특정 사전 조건을 확인하고 사후 조건을 어떻게 확인합니까? –
컨텍스트에 추가 된 엔티티에 대한 추적을 수행하고 각 테스트 후에 플러시합니다. 이렇게하면 요청 당 데이터베이스의 초기화 시간을 무시할 수 있습니다. –
정적 생성자를 사용해 보셨습니까? –