unit-testing-singletons
全部标签 在我的单元测试中,我Autowiring了一些使用URL的数据源jdbc:derby:memory:mydb;create=true创建内存数据库。要删除内存中的Derby数据库,您必须连接:jdbc:derby:memory:mydb;drop=true我希望在每次测试后都发生这种情况,并从一个新的数据库开始。我如何使用Spring执行此操作? 最佳答案 HowtoshutdownDerbyin-memorydatabaseProperly给了我一个解决方案的提示:mydb.drop.url=jdbc:derby:memory:m
今天我尝试将一个带有集成测试的项目从maven切换到gradle。一切正常,除了我在testng上遇到严重问题。该项目使用hibernate/JPA2进行数据库访问,并有几个依赖于test/resources/META-INF/persistence.xml中的持久性单元的测试。当我使用gradle运行测试套件时,一切正常。但是当我从eclipse运行xml(或任何测试类本身)时,它似乎试图使用main/resources/META-INF/persistence.xml。因为我的大部分工作都使用TDD,所以我确实需要从eclipse运行/调试测试。当我将持久性单元添加到生产persi
LoggerProducer.java是一个用于生成要注入(inject)CDIbean中的记录器的类:@InjectLoggerLOG;完整代码:importjavax.ejb.Singleton;/***@authorrveldpau*/@SingletonpublicclassLoggerProducer{privateMaploggers=newHashMap();@ProducespublicLoggergetProducer(InjectionPointip){Stringkey=getKeyFromIp(ip);if(!loggers.containsKey(key)){
按照我的想法,当我们在整个应用程序中共享相同的对象状态时,我们应该创建一个单例类。在那种情况下,我们希望用户限制每次都创建一个新实例,这样他们就无法维护多个状态。同意。但是可以通过将实例变量声明为静态来实现相同的行为。在我看来,无论是cacheobjectcontainer、logger还是Classloader类,它都将起到相同的作用。请帮助我理解上面的概念,其中静态实例变量不能解决目的并且需要将类声明为Singleton?编辑部分好吧,让我更清楚一点。单例类的目的是跨jvm只保留单例类的一个实例。同意。但我想想想为什么我们只想保留一个实例。可能有两个原因:1)对象的创建成本可能很高
我想在@Before中获取当前正在执行的测试方法,以便我可以获得应用于当前正在执行的方法的注释。publicclassTestCaseExample{@BeforepublicvoidsetUp(){//getcurrentmethodhere.}@Test@MyAnnotation("id")publicvoidsomeTest{//code}} 最佳答案 尝试TestName规则publicclassTestCaseExample{@RulepublicTestNametestName=newTestName();@Before
我有这样一种情况,我们的单元测试需要很长时间才能为我们的业务域项目执行,因为它将数据库设置为已知状态,然后继续执行每个步骤。我知道这可以通过命令行上的“-Dmaven.test.skip=true”来完成,但希望仅在项目的NetBeans中配置它,如果有人可以阐明如何在IDE中进行配置,则全局是可以接受的。如何将maven2配置为仅在调用“测试”目标时执行测试?即使调用“测试”目标(fromthemavendocos),使用以下命令也会禁用测试。org.apache.maven.pluginsmaven-surefire-plugin2.6true 最佳答案
我看了很多关于Singleton的文章,其中大部分作者都说Java中Singleton的这种变体:publicclassSingleton{privatestaticSingletoninstance=newSingleton();privateSingleton(){}publicstaticSingletongetInstance(){returninstance;}}是不懒惰(然后是EAGER)。但我不明白为什么,Singleton()构造函数只会在Singleton类初始化时被调用。我知道几个可以触发类初始化的原因:将new与构造函数一起使用(但在这种情况下,构造函数是私有(p
我有一个资源要作为RestfulWS公开。如果我必须将其设为Singleton,首选和建议的方式是什么:1。使用@Singleton注释资源类或者2。在我的应用程序类实现中实现getSingletons()方法并在那里实例化资源publicclassRestApplicationextendsApplication{privateSetsingletons=newHashSet();publicRestApplication(){singletons.add(newPlayerResource());}@OverridepublicSet>getClasses(){returnnull
我正在尝试以特定方式处理没有Acceptheader的请求,但无论我做什么,Jersey似乎都一心想填写一个,所以它看起来总是请求有一个Acceptheader,即使它没有。importorg.glassfish.jersey.server.ResourceConfig;importorg.glassfish.jersey.test.JerseyTest;importorg.junit.Test;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.core.Application;importjavax.ws.r
这是递归吗?publicclassTest{Testtest=newTest();publicstaticvoidmain(String[]args){newTest();}}关于instanceinitalizer的版本呢??publicclassTest{{Testtest=newTest();}publicstaticvoidmain(String[]args){newTest();}}我在问,因为我更新了myoldanswer,它展示了如何在没有递归的情况下生成StackOverflowError,但现在我不能100%确定上面的代码是否是递归的。 最