У меня есть система, в которой все мои классы расширяют базовый класс Sol.Data.Object. В этом базовом классе у меня есть один метод для получения данных из базы данных:

public static ObjectType ReadById<ObjectType>(string schema, long id)
{
    SqlCommand command = User.CreateCommand(string.Format("{1}.Retrieve{0}",
                                            typeof(ObjectType).Name,
                                            schema),
                                            new SqlParameter("@ID", id));
       .....
}

Я назову этот метод, например, так: Sol.Movie.ReadId("dbo", 2)

Я использовал Visual Studio 2010 для создания модульного теста для этого метода:

public void ReadByIdTestHelper<ObjectType>()
{
    string schema = "dbo";
    long id = 1;
    ObjectType expected = default(ObjectType); //What should I put in here?!
    ObjectType actual;
    actual = Sol.Data.Object.ReadById<ObjectType>(schema, id);
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("Verify the correctness of this test method.");
}

[TestMethod()]
public void ReadByIdTest()
{
    ReadByIdTestHelper<Sol.Movie>();
}

Как мне определить ожидаемый тип? Я пробовал typeof(ObjectType), но это вызывает ошибку компиляции.

Спасибо за помощь!

0
Afflatus 5 Янв 2013 в 13:57

1 ответ

Лучший ответ

Я использовал этот метод, чтобы исправить проблему:

public void ReadByIdTestHelper<ObjectType>()
{
    string schema = "dbo";
    long id = 1;
    Sol.Movie movie = new Movie();
    ObjectType actual;
    actual = Sol.Data.Object.ReadById<ObjectType>(schema, id);
    Assert.AreEqual((actual is ObjectType), true);
}

[TestMethod()]
public void ReadByIdTest()
{
    ReadByIdTestHelper<Sol.Movie>();
}

Однако не знаю, лучший ли это способ сделать это.

0
Flagbug 5 Янв 2013 в 16:26