여러 시나리오에 대해 약 12 개의 단위 테스트가 있으며 이러한 테스트에서 하나의 비동기 메서드를 호출해야합니다 (한 번에 여러 번 테스트 할 때가 있습니다). "모두 실행"을 수행하면 3 명이 항상 실패합니다. "선택한 테스트 실행"을 사용하여 하나씩 실행하면 통과합니다. 내가 갖는 출력 예외는 이것이다 :모두 실행 중이지만 개별적으로 실행될 때 단위 테스트가 실패 함
System.AppDomainUnloadedException가 : 무부하 응용 프로그램 도메인에 액세스하기 위해 시도했습니다. 테스트가 스레드를 시작했지만 스레드를 중지하지 않은 경우에 발생할 수 있습니다. 완료되기 전에 테스트 (들)에 의해 시작된 모든 스레드가 중지되었는지 확인하십시오.
꽤 크다 내가 어디에서 시작해야할지 모르고 그래서 여기 예와 같이 정말 코드를 공유 할 수 없습니다 :
[TestMethod]
public async Task SampleTest()
{
var someProvider = new SomeProvider();
var result = await someProvider.IsSomethingValid();
Assert.IsTrue(result == SomeProvider.Status.Valid);
NetworkController.Disable();
result = await someProvider.IsSomethingValid();
Assert.IsTrue(result == SomeProvider.Status.Valid);
NetworkController.Enable();
}
편집 : 설정 다른이 실패하는 방법 미래에 대한 시간과 과거에 대한 각각의 시간. TimeProvider은 다음과 같습니다
[TestMethod]
public async Task SetTimeToFutureTest()
{
var someProvider = new SomeProvider();
var today = TimeProvider.UtcNow().Date;
var result = await someProvider.IsSomethingValid();
Assert.IsTrue(result == SomeProvider.Status.Valid);
TimeProvider.SetDateTime(today.AddYears(1));
var result2 = await someProvider.IsSomethingValid();
Assert.IsTrue(result2 == SomeProvider.Status.Expired);
}
:
public static class TimeProvider
{
/// <summary> Normally this is a pass-through to DateTime.Now, but it can be overridden with SetDateTime(..) for testing or debugging.
/// </summary>
public static Func<DateTime> UtcNow =() => DateTime.UtcNow;
/// <summary> Set time to return when SystemTime.UtcNow() is called.
/// </summary>
public static void SetDateTime(DateTime newDateTime)
{
UtcNow =() => newDateTime;
}
public static void ResetDateTime()
{
UtcNow =() => DateTime.UtcNow;
}
}
편집 2 :
[TestCleanup]
public void TestCleanup()
{
TimeProvider.ResetDateTime();
}
다른 방법이 유사, I 등
I 시간/날짜 변경을 시뮬레이션합니다 그것으로부터 .Result()를 가져 와서 동 기적으로 메소드를 호출하려고했으나 도움이되지 않았습니다. 나는 이것에 대해 웹상에서 톤 자료를 읽었지만 여전히 고투하고있다.
누구나 같은 문제가 발생 했습니까? 모든 팁을 높이 평가 될 것입니다.
공유 인스턴스 또는 정적 클래스 (예 : 'NetworkController')와 관련이 없다고 확신합니까? – bashis
실패한 메소드 중 @bashis 2는 NetworkController를 호출하지 않습니다. – user969153
당신의 방법이 의존적 인 것처럼 보입니다. 당신은 방법이 어디에 속해야하는지 정확한 순서를 알아야합니다. –