Есть некий интерфейс
public interface IMyInterface
{
public string Method1( string param );
}
и есть множество классов которые его реализуют.
MyInterfaceClass1, MyInterfaceClass2 и т.д.
Хотелось бы сделать описание входных/выходных результатов в Xml. Например так
<Method1TestCases>
<TestCase name="Metho1 Case1">
<Input>
<param>1</param>
</Input>
<Output>
2
</Output>
</TestCase>
</Method1TestCases>
При этом чтобы данные тесты отображались списком в runner в виде обычной иерархии ( как это получается в случае обычного кода ).
Чтобы можно было описать различные кейсы, assert и т.д.
Можно ли это сделать готовыми средствами или нужно велосипед делать
Здравствуйте, Аноним, Вы писали:
А>Есть некий интерфейс
...
А>Можно ли это сделать готовыми средствами или нужно велосипед делать
Частично это делается готовыми средствами. В частности в NUnit есть вот
такая штука и пример оттуда:
[Test, TestCaseSource("DivideCases")]
public void DivideTest(int n, int d, int q)
{
Assert.AreEqual( q, n / d );
}
static object[] DivideCases =
{
new object[] { 12, 3, 4 },
new object[] { 12, 2, 6 },
new object[] { 12, 4, 3 }
};
Вместо явно указанных значений в некотором массиве вы можете десериализовать XML в нужную вам структуру и возвращать ее. То есть по сути надо только добавить код, который будет вычитывать этот самый XML.
Но это пример для NUnit-a. Для Java есть такой движок как
TestNG, у которого можно задавать набор тестов в виде XML в том числе и с параметрами. При этом есть аннотация DataProvider, для которой надо указать ссылку на объект, откуда брать данные
Для JUnit есть еще
Parametrized Tests