Comments (2)
This is a known limitation. You need to inject fields into the test and then pass them on to the relevant thread.
Could you provide more information about the use case?
One thing we could potentially do is provide a static method like TestScopes.continueTest
that wraps a Callable<T>
so it can get access to the test scope. Then if you need to do something on another thread in the test it could work:
@RunWith(JUnit4.class)
public class MyTest {
@Rule public Acai acai = new Acai(TestModule.class);
private final ExecutorService service = Executors.newCachedThreadPool();
@Inject private Provider<TestHelper> testHelperProvider;
@Test
public void injectValueInDifferentThread() {
service.submit(TestScopes.continueTest(new Callable<Void>() {
@Override public Void call() throws Exception {
// continueTest would wrap the callable making get on the provider
// work here.
TestHelper myHelper = testHelperProvider.get();
// ... useful stuff goes here ...
return null;
}
}));
}
}
Would that help?
Would be good to understand the use case more to help decide if it should be supported and the best way to do so. In general we would expect @TestScoped
to be used only for test objects and injected into the test itself and passed down. I would expect the production code to be more likely to do stuff on threads but wouldn't use @TestScoped
there.
from acai.
This is fixed for threads started from the test thread in commit #23.
from acai.
Related Issues (10)
- Test scope left open if test injection fails
- Fail on misuse of TestScoped bindings
- Parameterized of WebDriver factory
- Use standard JUnit4 annotations. HOT 1
- There is a vulnerability in JUnit 4.12,upgrade recommended
- There is a vulnerability in Guava: Google Core Libraries for Java 24.0-jre,upgrade recommended
- Provide a clean way to stop services HOT 2
- Support injecting methods of testing services
- Support running TestingServices in parallel
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from acai.