Это - невоспитанность для рассчитывания на порядок модульных тестов NUnit

Вставка не имеет предложения WHERE.

Если вы хотите только вставить строку для определенного имени пользователя, то, вероятно, лучше всего сделать это в своем сценарии php-вызова.

Если вы хотите изменить существующую строку для определенного имени пользователя, вы должны использовать инструкцию для обновления: -

UPDATE user_detail
SET email = '$email', 
    looking = '$looking', 
    username = '$username', 
    profession = '$profession', 
    experience = '$experience', 
    current_work = '$current_work', 
    state = '$state', 
    job_type = '$job_type', 
    about = '$about', 
    college = '$college', 
    diploma = '$diploma', 
    department = '$department'
WHERE s = '$username'

Если вы хотите вставить строку, если она не существует, но обновите ее, если она существуют, тогда вы можете сделать UPDATE INSERT / ON DUPLICATE KEY UPDATE (если столбец s для имени пользователя имеет на нем уникальный индекс): -

INSERT INTO user_detail (s,
                        email, 
                        looking, 
                        username, 
                        profession, 
                        experience, 
                        current_work, 
                        state, 
                        job_type, 
                        about, 
                        college, 
                        diploma, 
                        department) 
VALUES ('$username',
        '$email', 
        '$looking', 
        '$username', 
        '$profession', 
        '$experience', 
        '$current_work', 
        '$state', 
        '$job_type', 
        '$about', 
        '$college', 
        '$diploma', 
        '$department') 
ON DUPLICATE KEY UPDATE email = VALUES(email), 
                        looking = VALUES(looking), 
                        username = VALUES(username), 
                        profession = VALUES(profession), 
                        experience = VALUES(experience), 
                        current_work = VALUES(current_work), 
                        state = VALUES(state), 
                        job_type = VALUES(job_type), 
                        about = VALUES(about), 
                        college = VALUES(college), 
                        diploma = VALUES(diploma), 
                        department = VALUES(department)
15
задан Mark Brittingham 31 January 2009 в 02:31
поделиться

8 ответов

Доверие порядку Ваших тестов указывает на сохранение состояния через тесты. Это вонючее

инструмент для очистки А, которым состоит в том способ протестировать, где Вы только зависите от единственной части функциональности, Вы хотите проверить поведение. Обычно Вы насмешка другие объекты необходимо заставить метод под тестом функционировать.

А хороший способ думать о приближающихся модульных тестах эти , Расположение, закон, Утверждает шаблон.

Ниже отрывок от Karl Seguin, превосходного свободный электронная книга . Я имею Расположение annoted, закон и Утверждаю.

[TestFixture] public class CarTest 
{ 
    [Test] public void SaveCarCallsUpdateWhenAlreadyExistingCar()   
    {
         //Arrange
         MockRepository mocks = new MockRepository();
         IDataAccess dataAccess = mocks.CreateMock<IDataAccess>();   
         ObjectFactory.InjectStub(typeof(IDataAccess), dataAccess); 
         //Act
         Car car = new Car(); 
         Expect.Call(dataAccess.Save(car)).Return(389); 
         mocks.ReplayAll(); 
         car.Save(); 
         mocks.VerifyAll(); 
         // Assert
         Assert.AreEqual(389, car.Id); 
         ObjectFactory.ResetDefaults();
    } 
}
10
ответ дан 1 December 2019 в 00:37
поделиться

Изучите тестовые установки приспособления , которые позволяют Вам указывать функции, которые будут выполняться перед любым из тестов в приспособлении. Это позволяет Вам делать общую установку однажды, и она будет всегда работать, запускаете ли Вы один тест или все тесты в комплекте.

11
ответ дан 1 December 2019 в 00:37
поделиться

Модульные тесты предназначаются к одинокому, не быть выполненными как последовательный сценарий. Если Вам на самом деле нужны они выполненный последовательно, собрать их в единственную тестовую функцию.

, Если Ваши модульные тесты страдают от дорогая установка , можно делать интеграционное тестирование, когда Вы думаете, что делаете поблочное тестирование. При ударе базы данных SQL в большинстве модульных тестов Вы - на самом деле интеграционное тестирование со своим уровнем доступа к данным.

8
ответ дан 1 December 2019 в 00:37
поделиться

Я просмотрел бы каждый тест как абсолютно независимый от любого другого теста. Даже если бы Вы могли бы передать под мандат порядок тестов, это был бы кошмар обслуживания, когда тесты должны измениться.

6
ответ дан 1 December 2019 в 00:37
поделиться

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

3
ответ дан 1 December 2019 в 00:37
поделиться

К сожалению, выполненный порядок модульного теста не предсказуем или по крайней мере мог быть изменен в будущем. Например, платформа поблочного тестирования будет изменена так, каждый тест будет выполняться в отдельном потоке. Таким образом с моей точки зрения с помощью тестового порядка не разумно. С другой стороны, можно создать ряд маленьких независимых тестов, чтобы протестировать мелкие детали кода и затем создать один или несколько больших тестов, которые запустят маленькие тесты в определенном порядке.

2
ответ дан 1 December 2019 в 00:37
поделиться

Я настоятельно советовал бы для создания всех модульных тестов независимыми.

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

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

3
ответ дан 1 December 2019 в 00:37
поделиться

Если у Вас есть тесты с сохранением информации (типичная проблема с работой базы данных - который является тем, что я делаю, когда я не нахожусь на ТАК), то мне кажется, что предотвращение порядка в тестовом файле не абсолютно необходимо. Однако необходимо распознать, что, если у Вас есть 2 теста с тестом 2 в зависимости от теста 1 передача, затем Вы получите 'катастрофический' двойной отказ, если тест 1 сбой, потому что тест 2 не имеет ожидаемой установки (и, кроме того, Вы хотите волноваться, передает ли тест 2 действительно после теста 1 отказавшее, если Вы думаете, что тестируют 2, будет зависеть от теста 1 передача).

Вот почему Вы хотите тесты, независимые каждый раз, когда возможный - и внутрифайл и межфайл.

было бы очень неблагоразумно зависеть от порядка между (наборы) тесты в различных файлах.

2
ответ дан 1 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: