일부 MSTest 기반 단위 테스트를 설정하고 있습니다. 내 인생을 더 편리하게하기 위해 제네릭 설정과 테스트에 필요한 모든 테스트를 처리하는 기본 클래스를 사용하고 싶습니다. 내 기본 클래스는 다음과 같습니다MSTest에서 상속 사용
[TestClass]
public class DBTestBase {
public TestContext TestContext { get; set; }
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext) {
var config = new XmlConfigurationSource("ARconfig_test.xml");
ActiveRecordStarter.Initialize(Assembly.Load("LocalModels"), config);
}
[TestInitialize()]
public void MyTestInitialize() {
ActiveRecordStarter.CreateSchema();
Before_each_test();
}
protected virtual void Before_each_test() { }
[TestCleanup()]
public void MyTestCleanup() {
After_each_test();
}
protected virtual void After_each_test() { }
}
내 실제 테스트 클래스는 다음과 같습니다 : 예상대로
[TestClass]
public class question_tests : DBTestBase {
private void CreateInitialData() {
var question = new Question()
{
Name = "Test Question",
Description = "This is a simple test question"
};
question.Create();
}
protected override void Before_each_test() {
base.Before_each_test();
CreateInitialData();
}
[TestMethod]
public void test_fetching() {
var q = Question.FindAll();
Assert.AreEqual("Test Question", q[0].Name, "Incorrect name.");
}
}
TestInitialize 기능이 작동합니다. 그러나 ClassInitialize 함수는 절대로 실행되지 않습니다.
[ClassInitialize()]
public static void t(TestContext testContext) {
MyClassInitialize(testContext);
}
내 기본 클래스 내 자식 클래스를 참조하지 않고 실행할 수있는 기능을 초기화 얻을 수 있나요 : 내 아이 클래스에 다음 추가 할 경우 실행합니까?
답변으로 추가하는 것이 너무 위험합니다. 기본 클래스에서 정적 생성자를 사용해보십시오. – roufamatic
AssemblyInitialize()를 사용하여 종료되었습니다. 정확히 내가 원했던 것은 아니지만 MSTest가 그 일을하지 않는다고 생각합니다. @Roufamatic, 귀하의 답변은 아마도 유일한 방법입니다. 게시하는 경우이를 수락합니다. – oillio