Тест NUnit на строку базы данных? - PullRequest
3 голосов
/ 03 июня 2011

Редактировать: я супер новичок в NUnit.

Я не знаю, возможно ли это, но я пойду дальше и объясню, что я пытаюсь сделать.

Я хочу создать тестовое устройство, которое запускает тест с 5 различными типами входных данных, поступающих из базы данных.

TestFixture
    Test using input1
    Test using input2
    Test using input3
    Test using input4
    Test using input5

Таким образом, из графического интерфейса NUnit я могу точно определить, какой вход вызывает ошибку, но я не знаю, как это сделать. В настоящее время у меня что-то настроено так:

[TestFixture]
public class Tester{
    [Test]
    public void RunTest(){
        var inputs = db.inputs.where(a=>a.id < 6).ToList();
        bool testSuccess=true;
        foreach(var input in inputs){
            bool success = RunTheTest(input);
            if(success==false){
                testSuccess=false;
            }
        }
        //Tell NUnit that the entire test failed because one input failed
    }
}

В этом случае в NUnit я вижу:

Tester
    RunTest

И хотя RunTest пробует 5 разных входов, я знаю только, был ли один или несколько входов, которые потерпели неудачу, но я понятия не имею, какой вход не прошел. По сути, я спрашиваю, возможно ли динамически создавать тесты, которые отображаются в графическом интерфейсе NUnit, на основе того, что я хочу получить из базы данных.

Ответы [ 2 ]

3 голосов
/ 03 июня 2011

Посмотрите на атрибут TestCaseSource .Это позволит вам определить другой метод, который во время выполнения будет создавать тестовые случаи для каждого элемента, возвращаемого из исходного метода.

0 голосов
/ 03 июня 2011

Внутри цикла foreach вы можете выполнить
Assert.True( success, string.Format("Input: {0}", input ));

Также вы можете попробовать ValueSourceAttribute с sourceType, являющимся вспомогательным классом, который имеет метод, который возвращает IEnumerableназванный sourceName.Реализация этого метода должна извлекать входные значения из БД.

...