У меня была та же проблема и я не смог найти правильное решение, поэтому написал функцию GetFiles:
/// <summary>
/// Get all files with a specific extension
/// </summary>
/// <param name="extensionsToCompare">string list of all the extensions</param>
/// <param name="Location">string of the location</param>
/// <returns>array of all the files with the specific extensions</returns>
public string[] GetFiles(List<string> extensionsToCompare, string Location)
{
List<string> files = new List<string>();
foreach (string file in Directory.GetFiles(Location))
{
if (extensionsToCompare.Contains(file.Substring(file.IndexOf('.')+1).ToLower())) files.Add(file);
}
files.Sort();
return files.ToArray();
}
Эта функция будет вызывать Directory.Getfiles()
только один раз.
Например, вызовите функцию следующим образом:
string[] images = GetFiles(new List<string>{"jpg", "png", "gif"}, "imageFolder");
EDIT: для получения одного файла с несколькими расширениями используйте этот:
/// <summary>
/// Get the file with a specific name and extension
/// </summary>
/// <param name="filename">the name of the file to find</param>
/// <param name="extensionsToCompare">string list of all the extensions</param>
/// <param name="Location">string of the location</param>
/// <returns>file with the requested filename</returns>
public string GetFile( string filename, List<string> extensionsToCompare, string Location)
{
foreach (string file in Directory.GetFiles(Location))
{
if (extensionsToCompare.Contains(file.Substring(file.IndexOf('.') + 1).ToLower()) &&& file.Substring(Location.Length + 1, (file.IndexOf('.') - (Location.Length + 1))).ToLower() == filename)
return file;
}
return "";
}
Например, вызовите функцию, подобную этой :
string image = GetFile("imagename", new List<string>{"jpg", "png", "gif"}, "imageFolder");
Просто добавьте приведенный ниже в ваш config
.
specs: ['src/**/*spec.js'], // This should be the relative path to you spec.js
Теперь тест выполняется на основе порядка файлов в вашем пути.
Для запуска теста: protractor config.js
Suites
в вашей конфигурации используется для группировки вашего теста на основе функциональности или чего-то еще.
Лучший способ решить эту проблему - переместить все ваши тесты в один файл и иметь два describe
в вашей спецификации.
структура: spec.js
`describe()`
{
beforeall() \\ Spec1.js
it()
it()
}
describe(){
beforeAll()\\spec2.js
it()
it()
}
Надеюсь, это поможет вам
После некоторого расследования я смог воссоздать вашу проблему, и, похоже, она связана с тем, как Жасмин обрабатывает все ловушки. Существует полное обсуждение здесь и здесь , но в основном (и удивительно) кажется, что все в вашем тестовом файле, не объявленном в описании, будет выполнено до ЛЮБОГО [119 ] выполняются тесты, включая beforeAll hooks . Это удивляет меня, так как я почти уверен, что раньше использовал все снаружи, раньше описывал без проблем, но сейчас не могу это проверить.
Однако, если вы объявите свой хук beforeAll в своем описании, он будет поднят и все еще будет выполняться перед вашими тестами точно так же, как вы ожидаете, что он будет вести себя сейчас.
Можете ли вы попробовать переместить ваши блоки beforeAll в пределах вашего описания, как показано ниже:
Spec1.js
describe('Create Accounts', function () {
beforeAll(function () {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = globalconstants.wait10Mints;
browser.waitForAngularEnabled(false);
browser.get(env.appUrl);
browser.getTitle().then(function (title) {
expect(title, "Browser title is not the expected. But " + browser.getTitle()).toBe("Valueone");
});
browser.waitForAngularEnabled(true);
loginPage.login();
commonPage.navigateToAccounts();
accountsPage.deleteAccounts(number);
});
it("Create Savings", function () {
something
});
it("Create current account", function () {
something
});
});
Spec2.js [ 1112]
describe('Create Users', function () {
beforeAll(function () {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = globalconstants.wait10Mints;
browser.waitForAngularEnabled(false);
browser.get(env.appUrl);
browser.getTitle().then(function (title) {
expect(title, "Browser title is not the expected. But " + browser.getTitle()).toBe("Valueone");
});
browser.waitForAngularEnabled(true);
loginPage.login();
commonPage.navigateToUsers();
usersPage.deleteUsers(name);
});
it("Create user", function () {
something
});
it("Create user", function () {
something
});
})