programing

UNit 테스트에서 WPF 구성 요소 사용 - STA 사용 방법

javajsp 2023. 4. 29. 08:30

UNit 테스트에서 WPF 구성 요소 사용 - STA 사용 방법

NU 유닛 테스트에서 WPF 구성 요소를 사용해야 합니다.ReSharper를 통해 테스트를 실행하면 WPF 개체를 사용할 때 다음 오류와 함께 실패합니다.

System.잘못된 작동예외:

호출 스레드는 STA여야 합니다. 대부분의 UI 구성 요소에 STA가 필요합니다.

나는 이 문제에 대해 읽었고, 스레드가 STA여야 하는 것처럼 들렸지만, 나는 아직 이것을 하는 방법을 알아내지 못했습니다.문제가 발생하는 원인은 다음 코드입니다.

[Test]
public void MyTest()
{
    var textBox = new TextBox(); 
    textBox.Text = "Some text"; // <-- This causes the exception.
}

요구 사항을 추가해야 합니다.테스트 클래스에 대한 STA 특성입니다.

[TestFixture, RequiresSTA]
public class MyTestClass
{
}

최신 버전에서는 특성이 변경되었습니다.

[Apartment(ApartmentState.STA)]
public class MyTestClass
{}

이거 먹어봤어요?


테스트하려는 dll에 대한 app.config 파일을 만들고, UNit이 MTA가 아닌 STA로 테스트 환경을 만들도록 강제하기 위해 몇 가지 UNit 적절한 설정을 추가하기만 하면 됩니다.

편의를 위해 다음과 같은 구성 파일이 필요합니다(또는 이러한 섹션을 기존 구성 파일에 추가).

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="NUnit">
            <section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
        </sectionGroup>
    </configSections>

    <NUnit>
        <TestRunner>
            <add key="ApartmentState" value="STA" />
        </TestRunner>
    </NUnit>
</configuration> 

언급URL : https://stackoverflow.com/questions/2220418/using-wpf-components-in-nunit-tests-how-to-use-sta