Порядок выполнения функции в тестовом примере mxunit
Я использую MxUnit в качестве основы тестирования для моего проекта ColdFusion. Но я не уверен, в каком порядке выполняются функции в тестовом примере. Я вставил фиктивные записи в БД для моего тестирования, в beforeTests()
и удалив эти записи в afterTests()
, У меня есть следующие функции в моем тестовом примере
public void function Read() {
//Block of code
}
public void function Save() {
//Block of code
}
public void function Delete() {
//Block of code
}
Но сначала Delete()
исполняется, поэтому read()
возвращает "Запись не найдена"(сообщение об ошибке), поскольку запись удаляется в самой функции delete(). Поэтому я подумал, что он работает в алфавитном порядке, и поэтому я изменил имена функций соответственно (Read(),Save(),XDelete()
- так как это в алфавитном порядке). Опять то же самое происходит.
Но работает нормально, когда я переименовал функции в A_Read(),B_save(),C_Delete()
,
Поэтому кто-то объясняет, в каком порядке выполняются функции.
2 ответа
Вы не можете гарантировать, в каком порядке они будут работать, предполагая, что это случайно.
См. http://blog.adamcameron.me/2013/11/unit-testing-mxunit-and-test-scenario.html
Для данного тестового прогона нет гарантии, в каком порядке выполняются тесты, хотя в действительности все зависит от того, как ColdFusion представляет их в метаданных CFC, я думаю. Их порядок выполнения, конечно, не рандомизирован. Но не следует принимать какой-либо порядок выполнения теста. И действительно, каждый тест действительно должен быть полностью отдельным от других тестов в CFC
Вам действительно нужно переосмыслить то, как вы проводите свои тесты, чтобы они все были независимы друг от друга.
Однако, если вы действительно должны: http://blog.bittersweetryan.com/2012/01/using-new-orderedtestdecorator-in.html
Возможно, вам лучше использовать setUp и tearDown вместо beforeTests и afterTests. Таким образом, новые фиктивные записи будут вставлены в базу данных перед каждым тестом, и тесты не будут зависеть друг от друга.