Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Порядок выполнения работы. В данном порядке выполнения лабораторной работы будет произведено написание тестов для функций слоя доступа к данным DAO






    В данном порядке выполнения лабораторной работы будет произведено написание тестов для функций слоя доступа к данным DAO, разработанным и реализованным в четвертой лабораторной работе.

    Для тестирования будет использоваться Unit Testing Framework, который включен в Visual Studio 2008.

    1. Создайте консольное приложение Windows (нажмите «Файл», в меню выберите «Создать», затем «Проект», в диалоговом окне выберите «Windows», «Консольное приложение», введите имя проекта, например lab6, и выберите каталог, в котором будет храниться проект).

    2. Создайте в проекте каталоги dao, domain, mapping. Перенесите в эти каталоги любым доступным способом классы слоя доступа к данным, реализованные в четвертой лабораторной работе. Это можно сделать, например, с использованием файлового менеджера Total Commander.

    Откройте каталог dao с четвертой лабораторной работы и скопируйте все классы в каталог dao проекта консольного приложения. Результаты копирования представлены на рисунке 6.1.

    Рисунок 5.1 – Результаты копирования классов с каталога dao предыдущего проекта в каталог dao WEB-приложения

    Классы каталогов domain и mapping таким же образом необходимо скопировать в соответствующие каталоги консольного приложения.

    После копирования классов в проекте они не появятся, их следует добавить в проект (нажмите правой кнопкой мыши на каталог dao и в контекстном меню выберете пункт «Добавить», «Существующий элемент», в открывшемся диалоге выберете все классы каталога dao консольного приложения и нажмите «Добавить»). Те же действия произведите с классами каталогов domain и mapping. В проекте должны появиться все классы слоя доступа к данным.

    3. Подключите к проекту все необходимые библиотеки. Список библиотек приведен ниже:

    Npgsql.dll
    Mono.Security.dll
    NHibernate.dll
    Antlr3.Runtime.dll
    Iesi.Collections.dll
    log4net.dll
    Castle.DynamicProxy2.dll
    Castle.Core.dll
    NHibernate.ByteCode.Castle.dll
    FluentNHibernate.dll

    Измените namespace каждого класса с lab4 на lab6 как показано в примере:

    namespace lab4.dao { abstract public class DAOFactory { public abstract IStudentDAO getStudentDAO();   public abstract IGroupDAO getGroupDAO(); } } namespace lab6.dao { abstract public class DAOFactory { public abstract IStudentDAO getStudentDAO();   public abstract IGroupDAO getGroupDAO(); } }

     

    Исправьте ошибки проекта и откомпилируйте проект с консольным приложением, он должен откомпилироваться без ошибок. Данный проект можно было и не создавать, а использовать проекты из предыдущих лабораторных работ, в которых присутсвует слой доступа к данным DAO.

    4. Создайте тестирующий проект (нажмите «Файл», «Создать проект», в диалоговом окне выберите «Тест», «Тестовый проект», введите имя проекта, если имя тестируемого проекта lab6, то принято называть тестовый проект lab6Test, в поле «Решение» выберите «Добавить решение»). В тестовом проекте будут располагаться модульные тесты классов для слоя доступа к данным. Таким образом, у нас в одном решении содержится два проекта: тестируемый проект, классы которого необходимо проверить на работоспособность, и тестирующий проект, в котором будут содержаться модульные тесты.

    5. На данный момент в проекте содержится один класс - UnitTest1, в котором содержится один тестовый метод TestMethod1. Если запустить процесс тестирования (нажать «Тест», «Выполнить», «Все тесты решения»), то один единственный тест проекта будет успешно пройден, поскольку в нем не содержится проверок. Удалите класс тестирования, созданный по умолчанию.

    6. Подключите к тестирующему проекту проект lab6 и все библиотеки проекта lab6.

    7. В тестирующем проекте необходимо создать набор классов, методы которых протестировали бы работоспособность методов классов слоя доступа к данным. Необходимо протестировать класс GroupDAO и класс StudentDAO, но поскольку эти классы являются наследниками шаблонного класса GenericDAO, то логично будет также вынести тестирование методов GenericDAO в шаблонный класс. Создайте в тестовом проекте три класса: TestGenericDAO, TestGroupDAO, TestStudentDAO. В классе TestGenericDAO будет производиться тестирование методов класса GenericDAO, в классе TestGroupDAO будет производиться тестирование методов класса GroupDAO, а в классе TestStudentDAO будет производиться тестирование методов класса StudentDAO. Тестовый класс обычно состоит из набора методов-тестов помеченных атрибутом [TestMethod]. Также может содержаться метод инициализации теста, который вызывается перед запуском метода-теста и помечен атрибутом [TestInitialize], и метод очистки теста, который вызывается каждый раз по завершению метода-теста и помечен атрибутом [TestCleanup]. Также могут присутствовать методы инициализации и очистки уровня класса, которые вызываются перед запуском первого теста и после последнего теста соответственно.

    8. Текст тестового класса TestGenericDAO приведен ниже:

     

    using System;

    using Microsoft.VisualStudio.TestTools.UnitTesting;

    using NHibernate;

    using NHibernate.Criterion;

    using System.Collections.Generic;

    using FluentNHibernate;

    using FluentNHibernate.Cfg;

    using FluentNHibernate.Cfg.Db;

    using FluentNHibernate.Automapping;

    using NHibernate.Tool.hbm2ddl;

    using System.Reflection;

    using FluentNHibernate.Mapping;

    using NHibernate.Cfg;

    using lab6.mapping;

    using lab6.dao;

    using lab6.domain;

     

    namespace lab6

    {

    [TestClass()]

    public abstract class TestGenericDAO< T> where T: EntityBase

    {

     

    protected static ISessionFactory factory;

    protected static ISession session;

    protected DAOFactory daoFactory;

    protected TestContext testContextInstance;

    /** DAO that will be tested */

    protected IGenericDAO< T> dao = null;

     

    /** First entity that will be used in tests */

    protected T entity1 = null;

    /** Second entity that will be used in tests */

    protected T entity2 = null;

    /** Third entity that will be used in tests */

    protected T entity3 = null;

     

    public TestGenericDAO()

    {

    session = openSession(" localhost", 5432, " university",

    " postgres", " 111111");

    }

     

    public TestContext TestContext

    {

    get

    {

    return testContextInstance;

    }

    set

    {

    testContextInstance = value;

    }

    }

     

    /*Getting dao this test case works with*/

    public IGenericDAO< T> getDAO()

    {

    return dao;

    }

     

    /*Setting dao this test case will work with*/

    public void setDAO(IGenericDAO< T> dao)

    {

    this.dao = dao;

    }

     

    [ClassCleanup]

    public static void ClassCleanup()

    {

    session.Close();

    }

     

    [TestInitialize]

    public void TestInitialize()

    {

    Assert.IsNotNull(dao,

    " Please, provide IGenericDAO implementation in constructor");

    createEntities();

    Assert.IsNotNull(entity1, " Please, create object for entity1");

    Assert.IsNotNull(entity2, " Please, create object for entity2");

    Assert.IsNotNull(entity3, " Please, create object for entity3");

    checkAllPropertiesDiffer(entity1, entity2);

    checkAllPropertiesDiffer(entity1, entity3);

    checkAllPropertiesDiffer(entity2, entity3);

    saveEntitiesGeneric();

    }

     

    [TestCleanup]

    public void TestCleanup()

    {

    try {

    if ((entity1 = dao.GetById(entity1.Id))! = null)

    dao.Delete(entity1);

    } catch (Exception){

    Assert.Fail(" Problem in cleanup method");

    }

    try {

    if ((entity2 = dao.GetById(entity2.Id))! = null)

    dao.Delete(entity2);

    } catch (Exception) {

    Assert.Fail(" Problem in cleanup method");

    }

    try {

    if ((entity3 = dao.GetById(entity3.Id))! = null)

    dao.Delete(entity3);

    } catch (Exception) {

    Assert.Fail(" Problem in cleanup method");

    }

    entity1 = null;

    entity2 = null;

    entity3 = null;

    }

     

    [TestMethod]

    public void TestGetByIdGeneric()

    {

    T foundObject = null;

    // Should not find with inexistent id

    try

    {

    long id = DateTime.Now.ToFileTime();

    foundObject = dao.GetById(id);

    Assert.IsNull(foundObject, " Should return null if id is inexistent");

    }

    catch (Exception)

    {

    Assert.Fail(" Should return null if object not found");

    }

    // Getting all three entities

    getEntityGeneric(entity1.Id, entity1);

    getEntityGeneric(entity2.Id, entity2);

    getEntityGeneric(entity3.Id, entity3);

    }

     

    [TestMethod]

    public void TestGetAllGeneric()

    {

    List< T> list = getListOfAllEntities();

    Assert.IsTrue(list.Contains(entity1),

    " After dao method GetAll list should contain entity1");

    Assert.IsTrue(list.Contains(entity2),

    " After dao method GetAll list should contain entity2");

    Assert.IsTrue(list.Contains(entity3),

    " After dao method GetAll list should contain entity3");

    }

     

    [TestMethod]

    public void TestDeleteGeneric()

    {

    try

    {

    dao.Delete((T)null);

    Assert.Fail(" Should not delete entity will null id");

    }

    catch (Exception)

    {

    }

    // Deleting second entity

    try

    {

    dao.Delete(entity2);

    }

    catch (Exception)

    {

    Assert.Fail(" Deletion should be successful of entity2");

    }

     

    // Checking if other two entities can be still found

    getEntityGeneric(entity1.Id, entity1);

    getEntityGeneric(entity3.Id, entity3);

     

    // Checking if entity2 can not be found

    try

    {

    T foundEntity = null;

    foundEntity = dao.GetById(entity2.Id);

    Assert.IsNull(foundEntity,

    " After deletion entity should not be found with id " + entity2.Id);

    }

    catch (Exception)

    {

    Assert.Fail(" Should return null if finding the deleted entity");

    }

     

    // Checking if other two entities can still be found in getAll list

    List< T> list = getListOfAllEntities();

    Assert.IsTrue(list.Contains(entity1),

    " After dao method GetAll list should contain entity1");

    Assert.IsTrue(list.Contains(entity3),

    " After dao method GetAll list should contain entity3");

    }

     

    protected abstract void createEntities();

     

    protected abstract void checkAllPropertiesDiffer(T entityToCheck1,

    T entityToCheck2);

     

    protected abstract void checkAllPropertiesEqual(T entityToCheck1,

    T entityToCheck2);

     

    protected void saveEntitiesGeneric()

    {

    T savedObject = null;

    try

    {

    dao.SaveOrUpdate(entity1);

    savedObject = getPersistentObject(entity1);

    Assert.IsNotNull(savedObject,

    " DAO method saveOrUpdate should return entity if successfull");

    checkAllPropertiesEqual(savedObject, entity1);

    entity1 = savedObject;

    }

    catch (Exception)

    {

    Assert.Fail(" Fail to save entity1");

    }

    try

    {

    dao.SaveOrUpdate(entity2);

    savedObject = getPersistentObject(entity2);

    Assert.IsNotNull(savedObject,

    " DAO method saveOrUpdate should return entity if successfull");

    checkAllPropertiesEqual(savedObject, entity2);

    entity2 = savedObject;

    }

    catch (Exception)

    {

    Assert.Fail(" Fail to save entity2");

    }

     

    try

    {

    dao.SaveOrUpdate(entity3);

    savedObject = getPersistentObject(entity3);

    Assert.IsNotNull(savedObject,

    " DAO method saveOrUpdate should return entity if successfull");

    checkAllPropertiesEqual(savedObject, entity3);

    }

    catch (Exception)

    {

    Assert.Fail(" Fail to save entity3");

    }

    }

     

    protected T getPersistentObject(T nonPersistentObject)

    {

    ICriteria criteria = session.CreateCriteria(typeof(T))

    .Add(Example.Create(nonPersistentObject));

    IList< T> list = criteria.List< T> ();

    Assert.IsTrue(list.Count > = 1,

    " Count of grups must be equal or more than 1");

    return list[0];

    }

     

    protected void getEntityGeneric(long id, T entity)

    {

    T foundEntity = null;

    try

    {

    foundEntity = dao.GetById(id);

    Assert.IsNotNull(foundEntity,

    " Service method getEntity should return entity if successfull");

    checkAllPropertiesEqual(foundEntity, entity);

     

    }

    catch (Exception)

    {

    Assert.Fail(" Failed to get entity with id " + id);

    }

    }

     

    protected List< T> getListOfAllEntities()

    {

    List< T> list = null;

     

    // Should get not null and not empty list

    try

    {

    list = dao.GetAll();

    }

    catch (Exception)

    {

    Assert.Fail(

    " Should be able to get all entities that were added before");

    }

    Assert.IsNotNull(list,

    " DAO method GetAll should return list of entities if successfull");

    Assert.IsFalse(list.Count == 0,

    " DAO method should return not empty list if successfull");

    return list;

    }

     

    //Метод открытия сессии

    public static ISession openSession(String host, int port,

    String database, String user, String passwd)

    {

    ISession session = null;

    if (factory == null)

    {

    FluentConfiguration configuration = Fluently.Configure()

    .Database(PostgreSQLConfiguration

    .PostgreSQL82.ConnectionString(c => c

    .Host(host)

    .Port(port)

    .Database(database)

    .Username(user)

    .Password(passwd)))

    .Mappings(m => m.FluentMappings.Add< StudentMap> ().Add< GroupMap> ())

    .ExposeConfiguration(BuildSchema);

    factory = configuration.BuildSessionFactory();

    }

    //Открытие сессии

    session = factory.OpenSession();

    return session;

    }

     

    //Метод для автоматического создания таблиц в базе данных

    private static void BuildSchema(Configuration config)

    {

    new SchemaExport(config).Create(false, true);

    }

    }

    }

     

    9. Текст тестового класса TestGroupDAO приведен ниже:

     

    using System;

    using System.Collections.Generic;

    using Microsoft.VisualStudio.TestTools.UnitTesting;

    using lab6.domain;

    using lab6.dao;

     

    namespace lab6

    {

    [TestClass]

    public class TestGroupDAO: TestGenericDAO< Group>

    {

     

    protected IGroupDAO groupDAO = null;

    protected Student student1 = null;

    protected Student student2 = null;

    protected Student student3 = null;

     

    public TestGroupDAO(): base()

    {

    DAOFactory daoFactory = new NHibernateDAOFactory(session);

    groupDAO = daoFactory.getGroupDAO();

    setDAO(groupDAO);

    }

     

    protected override void createEntities()

    {

    entity1 = new Group();

    entity1.GroupName = " KS-091";

    entity1.CuratorName = " Pronin P. P.";

    entity1.HeadmanName = " Volosniy R. R.";

     

    entity2 = new Group();

    entity2.GroupName = " KS-092";

    entity2.CuratorName = " Eroshenko G. L.";

    entity2.HeadmanName = " Kruglenko T. R.";

     

    entity3 = new Group();

    entity3.GroupName = " KS-093";

    entity3.CuratorName = " Grab E. E.";

    entity3.HeadmanName = " Stecenko Q R.";

    }

     

    protected override void checkAllPropertiesDiffer(Group entityToCheck1,

    Group entityToCheck2)

    {

    Assert.AreNotEqual(entityToCheck1.GroupName, entityToCheck2.GroupName,

    " Values must be different");

    Assert.AreNotEqual(entityToCheck1.CuratorName,

    entityToCheck2.CuratorName, " Values must be different");

    Assert.AreNotEqual(entityToCheck1.HeadmanName,

    entityToCheck2.HeadmanName, " Values must be different");

    }

     

    protected override void checkAllPropertiesEqual(Group entityToCheck1,

    Group entityToCheck2)

    {

    Assert.AreEqual(entityToCheck1.GroupName, entityToCheck2.GroupName,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.CuratorName, entityToCheck2.CuratorName,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.HeadmanName, entityToCheck2.HeadmanName,

    " Values must be equal");

    }

     

    [TestMethod]

    public void TestGetByIdGroup()

    {

    base.TestGetByIdGeneric();

    }

     

    [TestMethod]

    public void TestGetAllGroup()

    {

    base.TestGetAllGeneric();

    }

     

    [TestMethod]

    public void TestDeleteGroup()

    {

    base.TestDeleteGeneric();

    }

     

    [TestMethod]

    public void TestGetGroupByName()

    {

    Group group1 = groupDAO.getGroupByName(entity1.GroupName);

    Assert.IsNotNull(group1,

    " Service method getGroupByName should return group if successfull");

    Group group2 = groupDAO.getGroupByName(entity2.GroupName);

    Assert.IsNotNull(group2,

    " Service method getGroupByName should return group if successfull");

    Group group3 = groupDAO.getGroupByName(entity3.GroupName);

    Assert.IsNotNull(group3,

    " Service method getGroupByName should return group if successfull");

    checkAllPropertiesEqual(group1, entity1);

    checkAllPropertiesEqual(group2, entity2);

    checkAllPropertiesEqual(group3, entity3);

    }

     

    [TestMethod]

    public void TestGetAllStudentOfGroup()

    {

    createEntitiesForStudent();

    Assert.IsNotNull(student1, " Please, create object for student1");

    Assert.IsNotNull(student2, " Please, create object for student2");

    Assert.IsNotNull(student3, " Please, create object for student3");

     

    entity1.StudentList.Add(student1);

    student1.Group = entity1;

    entity1.StudentList.Add(student2);

    student2.Group = entity1;

    entity1.StudentList.Add(student3);

    student3.Group = entity1;

     

    Group savedObject = null;

    try

    {

    dao.SaveOrUpdate(entity1);

    savedObject = getPersistentObject(entity1);

    Assert.IsNotNull(savedObject,

    " DAO method saveOrUpdate should return entity if successfull");

    checkAllPropertiesEqual(savedObject, entity1);

    entity1 = savedObject;

    }

    catch (Exception)

    {

    Assert.Fail(" Fail to save entity1");

    }

     

    IList< Student> studentList =

    groupDAO.getAllStudentOfGroup(entity1.GroupName);

    Assert.IsNotNull(studentList, " List can't be null");

    Assert.IsTrue(studentList.Count == 3,

    " Count of students in the list must be 3");

    checkAllPropertiesEqualForStudent(studentList[0], student1);

    checkAllPropertiesEqualForStudent(studentList[1], student2);

    checkAllPropertiesEqualForStudent(studentList[2], student3);

    }

     

    [TestMethod]

    public void TestDelGroupByName()

    {

    try

    {

    groupDAO.delGroupByName(entity2.GroupName);

    }

    catch (Exception)

    {

    Assert.Fail(" Deletion should be successful of entity2");

    }

     

    // Checking if other two entities can be still found

    getEntityGeneric(entity1.Id, entity1);

    getEntityGeneric(entity3.Id, entity3);

     

    // Checking if entity2 can not be found

    try

    {

    Group foundGroup = null;

    foundGroup = dao.GetById(entity2.Id);

    Assert.IsNull(foundGroup,

    " After deletion entity should not be found with groupName " +

    entity2.GroupName);

    }

    catch (Exception)

    {

    Assert.Fail(" Should return null if finding the deleted entity");

    }

     

    // Checking if other two entities can still be found in getAll list

    List< Group> list = getListOfAllEntities();

    Assert.IsTrue(list.Contains(entity1),

    " After dao method GetAll list should contain entity1");

    Assert.IsTrue(list.Contains(entity3),

    " After dao method GetAll list should contain entity3");

    }

     

    protected void createEntitiesForStudent()

    {

    student1 = new Student();

    student1.FirstName = " Ivanov";

    student1.LastName = " Kiril";

    student1.Sex = 'M';

    student1.Year = 1995;

     

    student2 = new Student();

    student2.FirstName = " Petrenko";

    student2.LastName = " Ivan";

    student2.Sex = 'M';

    student2.Year = 1997;

     

    student3 = new Student();

    student3.FirstName = " Karpov";

    student3.LastName = " Danil";

    student3.Sex = 'M';

    student3.Year = 2000;

    }

     

    protected void checkAllPropertiesEqualForStudent(Student entityToCheck1,

    Student entityToCheck2)

    {

    Assert.AreEqual(entityToCheck1.FirstName, entityToCheck2.FirstName,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.LastName, entityToCheck2.LastName,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.Sex, entityToCheck2.Sex,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.Year, entityToCheck2.Year,

    " Values must be equal");

    }

    }

    }

     

    10. Текст тестового класса StudentDAO приведен ниже

     

    using System;

    using System.Collections.Generic;

    using Microsoft.VisualStudio.TestTools.UnitTesting;

    using lab6.domain;

    using lab6.dao;

    using NHibernate.Criterion;

    using NHibernate;

     

    namespace lab6

    {

    [TestClass]

    public class TestStudentDAO: TestGenericDAO< Student>

    {

    protected IStudentDAO studentDAO = null;

    protected IGroupDAO groupDAO = null;

    protected Group group = null;

     

    public TestStudentDAO(): base()

    {

    DAOFactory daoFactory = new NHibernateDAOFactory(session);

    studentDAO = daoFactory.getStudentDAO();

    groupDAO = daoFactory.getGroupDAO();

    setDAO(studentDAO);

    }

     

    protected override void createEntities()

    {

    entity1 = new Student();

    entity1.FirstName = " Ivanov";

    entity1.LastName = " Kiril";

    entity1.Sex = 'M';

    entity1.Year = 1995;

     

    entity2 = new Student();

    entity2.FirstName = " Petrenko";

    entity2.LastName = " Ivan";

    entity2.Sex = 'M';

    entity2.Year = 1997;

     

    entity3 = new Student();

    entity3.FirstName = " Karpov";

    entity3.LastName = " Danil";

    entity3.Sex = 'M';

    entity3.Year = 2000;

    }

     

    protected override void checkAllPropertiesDiffer(Student entityToCheck1,

    Student entityToCheck2)

    {

    Assert.AreNotEqual(entityToCheck1.FirstName, entityToCheck2.FirstName,

    " Values must be different");

    Assert.AreNotEqual(entityToCheck1.LastName, entityToCheck2.LastName,

    " Values must be different");

    Assert.AreNotEqual(entityToCheck1.Year, entityToCheck2.Year,

    " Values must be different");

    }

     

    protected override void checkAllPropertiesEqual(Student entityToCheck1,

    Student entityToCheck2)

    {

    Assert.AreEqual(entityToCheck1.FirstName, entityToCheck2.FirstName,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.LastName, entityToCheck2.LastName,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.Sex, entityToCheck2.Sex,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.Year, entityToCheck2.Year,

    " Values must be equal");

    }

     

    [TestMethod]

    public void TestGetByIdStudent()

    {

    base.TestGetByIdGeneric();

    }

     

    [TestMethod]

    public void TestGetAllStudent()

    {

    base.TestGetAllGeneric();

    }

     

    [TestMethod]

    public void TestDeleteStudent()

    {

    base.TestDeleteGeneric();

    }

     

    [TestMethod]

    public void TestGetStudentByGroupFirstNameAndLastName()

    {

    group = new Group();

    group.GroupName = " KS-091";

    group.CuratorName = " Pronin P. P.";

    group.HeadmanName = " Volosniy R. R.";

    group.StudentList.Add(entity1);

    entity1.Group = group;

    group.StudentList.Add(entity2);

    entity2.Group = group;

    group.StudentList.Add(entity3);

    entity3.Group = group;

    Group savedGroup = null;

    try

    {

    groupDAO.SaveOrUpdate(group);

    savedGroup = getPersistentGroup(group);

    Assert.IsNotNull(savedGroup,

    " DAO method saveOrUpdate should return group if successfull");

    checkAllPropertiesEqualGroup(savedGroup, group);

    group = savedGroup;

    }

    catch (Exception)

    {

    Assert.Fail(" Fail to save group");

    }

    getStudentByGroupFirstNameAndLastName(entity1, group.GroupName,

    entity1.FirstName, entity1.LastName);

    getStudentByGroupFirstNameAndLastName(entity2, group.GroupName,

    entity2.FirstName, entity2.LastName);

    getStudentByGroupFirstNameAndLastName(entity3, group.GroupName,

    entity3.FirstName, entity3.LastName);

    group.StudentList.Remove(entity1);

    group.StudentList.Remove(entity2);

    group.StudentList.Remove(entity3);

    entity1.Group = null;

    entity2.Group = null;

    entity3.Group = null;

    groupDAO.Delete(group);

    }

     

    protected void getStudentByGroupFirstNameAndLastName(Student student,

    string groupName, string firstName, string lastName)

    {

    Student foundStudent = null;

    try

    {

    foundStudent = studentDAO.getStudentByGroupFirstNameAndLastName(

    groupName, firstName, lastName);

    Assert.IsNotNull(studentDAO,

    " Service method should return student if successfull");

    checkAllPropertiesEqual(foundStudent, student);

    }

    catch (Exception)

    {

    Assert.Fail(" Failed to get student with groupName " +

    groupName + " firstName " + firstName+" and lastName " + lastName);

    }

    }

     

    protected Group getPersistentGroup(Group nonPersistentGroup)

    {

    ICriteria criteria = session.CreateCriteria(typeof(Group))

    .Add(Example.Create(nonPersistentGroup));

    IList< Group> list = criteria.List< Group> ();

    Assert.IsTrue(list.Count > = 1,

    " Count of grups must be equal or more than 1");

    return list[0];

    }

     

    protected void checkAllPropertiesEqualGroup(Group entityToCheck1,

    Group entityToCheck2)

    {

    Assert.AreEqual(entityToCheck1.GroupName, entityToCheck2.GroupName,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.CuratorName, entityToCheck2.CuratorName,

    " Values must be equal");

    Assert.AreEqual(entityToCheck1.HeadmanName, entityToCheck2.HeadmanName,

    " Values must be equal");

    }

    }

    }

     

    11. Произведите тестирование классов слоя доступа к данным. Все тесты должны быть успешно пройдены.






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.