Java 这个春季训练有用吗?

Java 这个春季训练有用吗?,java,spring,jakarta-ee,junit,Java,Spring,Jakarta Ee,Junit,我们有一个基于Spring+Ibatis的J2EE应用程序。我计划用测试用例来包装我们的DAO(称为iBatis模板…通过获取Springbeans)。我对JUnit没有太多经验,所以我认为简单地为我的DAO创建一个对象,然后调用其中一个方法就可以了。但我错了,原来整个J2EE应用程序都在appserver(容器)上运行,但显然JUnit测试用例在容器之外。所以,在我的测试用例中,当我创建dao的对象并调用一个方法时,它在我的dao方法中的这样一行失败 ApplicationInitialize

我们有一个基于Spring+Ibatis的J2EE应用程序。我计划用测试用例来包装我们的DAO(称为iBatis模板…通过获取Springbeans)。我对JUnit没有太多经验,所以我认为简单地为我的DAO创建一个对象,然后调用其中一个方法就可以了。但我错了,原来整个J2EE应用程序都在appserver(容器)上运行,但显然JUnit测试用例在容器之外。所以,在我的测试用例中,当我创建dao的对象并调用一个方法时,它在我的dao方法中的这样一行失败

ApplicationInitializer.getApplicationContext().getBean("myMapclientBean");
于是我开始了谷歌搜索……我在Spring的网站上发现了一些帖子,并跟踪了一些管道

想听听你们对这门课的看法吗?这个价钱值钱吗?一个人也能自己学习这些东西吗?通过看几本书?(可能不是在4天内,而是在一个月内)


哦,我仍然无法对这些DAO进行单元测试…>\up>我大约一年半前参加了核心春季课程。从那以后,教学大纲显然有了一些变化,尽管仍然非常相似。老师很能干。在上这门课之前,我和Spring一起工作,但在课堂上,我感觉我学会了如何把事情做得更好

我认为你可能可以从书本、Spring的在线文档和源代码中获得所有原始信息,但是这个课程所做的是将所有内容联系起来,并教授最佳实践。也就是说,不只是“如何”还应该“为什么”和“何时”使用这样或那样的特性。这就是为什么我觉得我的技能有所提高

老师很乐意回答关于课堂以外的具体现实问题。所以带着问题来是个好主意


这道菜不便宜。这是否值得,取决于你是否擅长课堂教学,而不是自学,利用在线社区和同龄人来获得书本所没有的最佳实践体验。另外,请记住,春天是不断演变的。虽然你可以从课堂上得到一个好的基础,但是你仍然要适应新的特点(或另一个班级)。从那以后,教学大纲显然有了一些变化,尽管仍然非常相似。老师很能干。在上这门课之前,我和Spring一起工作,但在课堂上,我感觉我学会了如何把事情做得更好

我认为你可能可以从书本、Spring的在线文档和源代码中获得所有原始信息,但是这个课程所做的是将所有内容联系起来,并教授最佳实践。也就是说,不只是“如何”还应该“为什么”和“何时”使用这样或那样的特性。这就是为什么我觉得我的技能有所提高

老师很乐意回答关于课堂以外的具体现实问题。所以带着问题来是个好主意


这道菜不便宜。这是否值得,取决于你是否擅长课堂教学,而不是自学,利用在线社区和同龄人来获得书本所没有的最佳实践体验。另外,请记住,春天是不断演变的。虽然你可以从课堂上得到一个好的基础,但是你仍然要适应新的特点(或另一个班级)。 使用Spring时,您的bean不应该真正进入
ApplicationContext
并要求获得所需的bean——它们应该提供setter(或构造函数),以便注入依赖项


听起来,设计这些类的人与依赖注入的做法正好相反。

为了解决当前的问题:

使用Spring时,您的bean不应该真正进入
ApplicationContext
并要求获得所需的bean——它们应该提供setter(或构造函数),以便注入依赖项


这听起来像是设计这些类的人做了与依赖注入相反的事情。

在回答问题的第二部分时(我没有春季课程的经验,所以不能评论)

您可以使用Junit测试中定义的应用程序上下文,然后像在服务器容器中一样实例化DAO,如果您使用的是Junit 3.8或更早版本,则可以通过扩展测试用例来实现

如果您使用的是更高版本的Junit(4+),那么可以使用SpringTestContext框架和注释


在回答问题的第二部分时(我没有参加春季课程的经验,因此无法发表评论),两人的解释都比我在这里和本注解中所能解释的要好得多

您可以使用Junit测试中定义的应用程序上下文,然后像在服务器容器中一样实例化DAO,如果您使用的是Junit 3.8或更早版本,则可以通过扩展测试用例来实现

如果您使用的是更高版本的Junit(4+),那么可以使用SpringTestContext框架和注释


这两种方法的解释都比我在这里从注释中得到的要好得多

我使用了AbstractTransactionalDataSourceSpringContextTests路线。对我有用。我已经为我们正在工作的远程处理项目实例化了junit,这构成了我们junit测试的基础。通过

import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
public class TestBase extends AbstractDependencyInjectionSpringContextTests
{
  protected String[] getConfigLocations()
  {
    return new String[] { "classpath:conf/dataAccessContext.xml",     "classpath:conf/applicationContext-domain.xml",
    "classpath:conf/applicationContext-service.xml", "classpath:conf/applicationContext-dao.xml" };
  }

  protected Object getBeanToTest(String beanName)
  {
    return applicationContext.getBean(beanName);
  }

  protected Object getBeanToTest(Class clazz)
  {
    return applicationContext.getBean(clazz.getName());
  }

}

我使用了AbstractTransactionalDataSourceSpringContextTests路由。对我有用。我已经为我们正在工作的远程处理项目实例化了junit,这构成了我们junit测试的基础。通过

import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
public class TestBase extends AbstractDependencyInjectionSpringContextTests
{
  protected String[] getConfigLocations()
  {
    return new String[] { "classpath:conf/dataAccessContext.xml",     "classpath:conf/applicationContext-domain.xml",
    "classpath:conf/applicationContext-service.xml", "classpath:conf/applicationContext-dao.xml" };
  }

  protected Object getBeanToTest(String beanName)
  {
    return applicationContext.getBean(beanName);
  }

  protected Object getBeanToTest(Class clazz)
  {
    return applicationContext.getBean(clazz.getName());
  }

}

我也参加了课程,我同意杰夫所说的一切。在我看来,这很值得。谢谢你们。这很有帮助。我要我的小c